我至少在一年前得到了別人的代碼,我沒有關于他們使用哪個版本的 OpenCv 的任何資訊,我猜可能是 OpenCV 3。我正在使用 OpenCV 4,我需要將他們的代碼“翻譯”為開放式CV 4。
讓我們從
from cv2 import aruco
他們(我得到的舊代碼)使用了類似于以下的 aruco.detectMarkers 命令:
corners, ids, rejectedImgPoints = aruco.detectMarkers(
gray,
aruco_dictionary,
parameters,
cameraMatrix,
distCoeff
)
但是,在新的 Open CV 4 中,“aruco.detectMarkers”的輸入只有這三個:影像(灰色)、aruco_dictionary 和引數,因此該命令失敗。我可以通過將其稱為:
corners, ids, rejectedImgPoints = aruco.detectMarkers(
gray,
aruco_dictionary,
parameters
)
所以相機矩陣和畸變系數不是輸入。但是,如果我沒有將相機矩陣和失真系數作為輸入,我不會丟失一些輸入資訊嗎?這會給我一個不同于他們最初使用他們的命令得到的輸出嗎?
我找不到舊版本的 aruco.detectMarkers 函式的任何檔案來比較這兩者。
uj5u.com熱心網友回復:
您需要使用兩個功能:
detectMarkers,為您在圖片中找到的每個標記提供 quad 和 idestimatePoseSingleMarkers(或板相同......)將恢復傳入的標記四邊形的姿勢,給定相機矩陣和失真系數,以及長度(適用于所有給定的標記)。
不要 明確地不扭曲圖片。
Opencv v4.6.0 對 aruco 代碼進行了一系列更改。它似乎也洗掉了一些被誤導的實作選項,所以這很好。detectMarkers不應該使圖片或點不失真。這estimatePose...就是已經在做的事情。
v4.6.0 檔案中的附加“注意”是完全錯誤的。你可能想打開一個關于那個的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/497002.html
上一篇:不同的影像尺寸作為Tensorflow2物件檢測API的輸入
下一篇:分割成塊后如何合并影像
