当前位置: 欣欣网 > 码农

Python制作简单拼图效果

2024-02-17码农

大家好!今天给你们带来了使用cv2制作简单拼图效果实例。

安装:

pip install opencv-python numpy

完整代码:

importcv2importnumpy as npdefsplit_image(image, num_pieces):height,width = image.shape[:2]min_dim = min(height, width)piece_size = min_dim // num_piecespieces = []fori in range(num_pieces):forj in range(num_pieces):start_y = i * piece_sizeend_y = start_y + piece_sizestart_x = j * piece_sizeend_x = start_x + piece_sizepiece = image[start_y:end_y, start_x:end_x]pieces.append(piece)returnpiecesdefmerge_image(pieces, num_pieces, border_size):piece_size = pieces[0].shape[0]bordered_piece_size = piece_size + 2 * border_sizemerged_image = np.zeros((bordered_piece_size * num_pieces, bordered_piece_size * num_pieces, 3), dtype=np.uint8) + 255index = 0fori in range(num_pieces):forj in range(num_pieces):start_y = i * bordered_piece_size + border_sizeend_y = start_y + piece_sizestart_x = j * bordered_piece_size + border_sizeend_x = start_x + piece_sizeifindex < 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+= 1returnmerged_image#读取图片image = cv2.imread('input.jpg')#拆分成拼图效果num_pieces =3pieces = 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():在图像上写文字。