大家好!今天给你们带来了使用cv2制作简单拼图效果实例。
安装:
pip install opencv-python numpy
完整代码:
importcv2
importnumpy as np
defsplit_image(image, num_pieces):
height,width = image.shape[:2]
min_dim = min(height, width)
piece_size = min_dim // num_pieces
pieces = []
fori in range(num_pieces):
forj in range(num_pieces):
start_y = i * piece_size
end_y = start_y + piece_size
start_x = j * piece_size
end_x = start_x + piece_size
piece = image[start_y:end_y, start_x:end_x]
pieces.append(piece)
returnpieces
defmerge_image(pieces, num_pieces, border_size):
piece_size = pieces[0].shape[0]
bordered_piece_size = piece_size + 2 * border_size
merged_image = np.zeros((bordered_piece_size * num_pieces, bordered_piece_size * num_pieces, 3), dtype=np.uint8) + 255
index = 0
fori in range(num_pieces):
forj in range(num_pieces):
start_y = i * bordered_piece_size + border_size
end_y = start_y + piece_size
start_x = j * bordered_piece_size + border_size
end_x = start_x + piece_size
ifindex < len(pieces):
bordered_piece = cv2.copyMakeBorder(pieces[index], border_size, border_size, border_size, border_size, cv2.BORDER_CONSTANT, value=(255, 255, 255))
merged_image[start_y:end_y, start_x:end_x] = cv2.resize(bordered_piece, (piece_size, piece_size))
index+= 1
returnmerged_image
#读取图片
image = cv2.imread('input.jpg')
#拆分成拼图效果
num_pieces =3
pieces = split_image(image, num_pieces)
#设置边框参数
border_size =2
#拼图效果合并并去除黑色边框
merged_image = merge_image(pieces, num_pieces, border_size)
#保存更改后的图像
cv2.imwrite('output.jpg',merged_image)
效果:
参数简要:
cv2.imread():读取图像文件。
cv2.imshow():显示图像。
cv2.imwrite():保存图像文件。
cv2.resize():调整图像大小。
cv2.cvtColor():将图像转换为指定颜色空间。
cv2.GaussianBlur():对图像进行高斯滤波平滑处理。
cv2.Canny():利用Canny边缘检测算法检测图像边缘。
cv2.threshold():对图像进行二值化处理。
cv2.findContours():查找图像中的轮廓。
cv2.drawContours():在图像上绘制轮廓。
cv2.rectangle():在图像上绘制矩形。
cv2.circle():在图像上绘制圆形。
cv2.line():在图像上绘制直线。
cv2.putText():在图像上写文字。