结合notebook食用效果更佳,高效对比图像处理结果,从此远离imshow
import cv2
import numpy as np
import pyvista as pv
import matplotlib.pyplot as plt
def createRegularMesh(values, origin, cellSize):
"Output: grid"
grid = pv.UniformGrid()
grid.dimensions = np.array(values.shape) + 1
grid.origin = origin
grid.spacing = cellSize
grid.cell_data["values"] = values.flatten(order="F")
return grid
def showImage2D(title: str, image):
"image为2维array\n \n Output: None"
img_show = image[:, ::-1]
plt.title(title)
plt.imshow(img_show, cmap=plt.cm.gray, vmin=0, vmax=255)
plt.show()
def showImage3D(data):
"data为3维array"
gridMesh = createRegularMesh(data, (0, 0, 0), (1, 1, 1))
pv.global_theme.background = "white"
pl = pv.Plotter()
_ = pl.add_volume(gridMesh, opacity=25, cmap="copper_r")
pl.show()
def superpositionImage(img1, img2):
"img2叠加至img1\n \n Out: dst"
if len(img1.shape) == 2:
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
if len(img2.shape) == 2:
zero = np.zeros(img2.shape[:2], np.uint8)
img2 = cv2.merge([zero, img2, zero])
dst = cv2.addWeighted(img1, 1, img2, 0.1, 1)
return dst
# 多张图像横排展示,输入为图像list
def mergeShow(images):
"Out: image_merge"
for i in range(0, len(images)):
if len(images[i].shape) < 3:
images[i] = cv2.cvtColor(images[i], cv2.COLOR_GRAY2BGR)
image_merge = images[0]
if len(images) < 2:
return image_merge
for i in range(1, len(images)):
image_merge = np.concatenate([images[i], image_merge], axis=1)
return image_merge