close
使用 OpenCV 進行全景拼接
本文展示如何利用 OpenCV 的拼接功能將多張圖片合成一張全景圖。
程式碼範例與註解
# 匯入必要模組
import cv2
import argparse
# 解析命令列參數
ap = argparse.ArgumentParser()
ap.add_argument('img', nargs='+', help='input images')
args = ap.parse_args()
# 加載所有輸入圖片
img_arr = []
for filename in args.img:
image = cv2.imread(filename)
img_arr.append(image)
# 初始化拼接器並進行拼接
stitcher = cv2.Stitcher_create()
status, pano = stitcher.stitch(img_arr)
# 驗證拼接結果
if status == cv2.Stitcher_OK:
# 顯示與保存全景圖
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', pano)
cv2.imwrite('final.jpg', pano)
cv2.waitKey(0)
cv2.destroyAllWindows()
print('done')
else:
print('error: {}'.format(status))
程式解析
- 解析命令列參數: 使用
argparse
獲取多張輸入圖片的路徑,並將其存入列表img_arr
。 - 圖片加載: 使用
cv2.imread
加載圖片,並依序加入列表以供拼接器使用。 - 初始化拼接器: 使用
cv2.Stitcher_create()
初始化拼接器,並調用stitch
方法執行拼接操作。 - 檢查拼接結果: 拼接完成後,根據返回的狀態碼判斷拼接是否成功:
cv2.Stitcher_OK
:拼接成功,繼續後續操作。- 其他狀態碼:拼接失敗,打印錯誤信息。
- 顯示與保存全景圖: 成功拼接後,使用
cv2.imshow
顯示結果,並通過cv2.imwrite
將全景圖保存為final.jpg
。
結論
本程式展示了如何使用 OpenCV 的拼接器進行多圖片的全景拼接。該方法適用於場景較穩定的情況,並且支持多張圖片輸入。通過適當調整圖片順序和重疊部分,可以提升拼接的準確性和效果。
文章標籤
全站熱搜