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 的拼接器進行多圖片的全景拼接。該方法適用於場景較穩定的情況,並且支持多張圖片輸入。通過適當調整圖片順序和重疊部分,可以提升拼接的準確性和效果。

arrow
arrow
    創作者介紹
    創作者 liusming 的頭像
    liusming

    劉老師的跨域創想工坊

    liusming 發表在 痞客邦 留言(1) 人氣()