當前位置: 妍妍網 > 碼農

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():在影像上寫文字。