[英]How to Set Panorama Mode in OpenCV Python Stitcher Class?
基於這個問題/答案,我一直在嘗試在 python 中使用 OpenCV 的 Stitcher 類。 我的代碼與答案中的代碼基本相同。
import cv2
stitcher = cv2.createStitcher(False)
foo = cv2.imread("D:/foo.png")
bar = cv2.imread("D:/bar.png")
result = stitcher.stitch((foo,bar))
cv2.imwrite("D:/result.jpg", result[1])
問題是我想將模式從全景更改為掃描。 在 c++ 文檔中, create 方法有一個 mode 輸入。 然而,Python 中的 createStitcher 類只需要一個輸入——是否嘗試 gpu。 有沒有辦法在 Python 中指定模式?
當我嘗試 createStitcherScans 時,出現錯誤
stitcher = cv2.createStitcherScans(False)
"AttributeError: 'module' object has no attribute 'createStitcherScans'"
我確實發現這個 GitHub 問題似乎很相關,關於 Python 綁定缺少一些東西。 但這超出了我的頭腦,我不確定如何編輯 opencv 代碼以正確執行此操作。 我嘗試將其添加到拼接.hpp:
typedef Stitcher::Mode Mode;
但什么也沒發生。 createStitcher(1, False) 仍然給我屬性錯誤。 任何幫助將不勝感激。
這已在 Open CV 4 中解決(至少在我正在運行的 4.1.0 中)。 您現在可以將mode
指定為cv2.Stitcher.create
的關鍵字參數:
stitcher = cv2.Stitcher.create(mode = 1)
似乎尚未移植不同模式的枚舉標簽,但它適用於數字。 PANORAMA
是0
, SCANS
是1
所定義此處。
請注意,如果您正在使用 Google Colab,那么您可以像這樣更改 Open CV 的版本:
!pip3 install opencv-python==4.1.0.25
我有相同的問題。 查看文檔后,看起來 python 包裝器函數沒有映射到 create(),而是 createDefault(),它沒有模式輸入,只有 try_use_gpu 輸入。 我沒有使用包裝器的經驗,但可以嘗試通過閱讀OpenCV 的關於 python 綁定如何工作的信息來弄清楚。
基於我迄今為止在 python 中使用針跡的工作,似乎 createDefault() 在 PANORAMA 模式下創建了一個拼接器,因為它正在扭曲我的圖像。 我不能把工作時間花在瀏覽包裝上,但如果我最終花個人時間來修復它,我會在這里更新我的答案。
在 GitHub samples/python/stitching.py
上查看 Python 的官方測試代碼,您可以使用Stitcher_PANORAMA
或Stitcher_SCANS
。 您可以隨時檢查任何模塊的測試代碼,例如本例中的modules/stitching/misc/python/test
。
stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.