大家好!今天給你們帶來了使用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():在影像上寫文字。