为什么 cv2.aruco.detectMarkers() 中 Charucos 的检出率这么差?
Why is detection rate of Charucos in cv2.aruco.detectMarkers() so poor?
我很难弄清楚为什么 cv2.aruco.detectMarkers() 在使用我的校准板查找多个标记时会遇到问题。摆弄参数并不能从根本上提高质量。字典是正确的,因为我在打印前用数字模板试过了。
这是我从真实图像中检测 CHARuco 标记的方法:
import cv2
from cv2 import aruco
#ChAruco board variables
CHARUCOBOARD_ROWCOUNT = 26
CHARUCOBOARD_COLCOUNT = 26
ARUCO_DICT = cv2.aruco.Dictionary_get(aruco.DICT_4X4_1000)
#Create constants to be passed into OpenCV and Aruco methods
CHARUCO_BOARD = aruco.CharucoBoard_create(
squaresX=CHARUCOBOARD_COLCOUNT,
squaresY=CHARUCOBOARD_ROWCOUNT,
squareLength=5, #mm
markerLength=4, #mm
dictionary=ARUCO_DICT)
#load image
img = cv2.imread('imgs\frame25_crop.png', 1)
test image with CHAruco markers
#initialize detector
parameters = aruco.DetectorParameters_create()
parameters.adaptiveThreshWinSizeMin = 150
parameters.adaptiveThreshWinSizeMax = 186
#Find aruco markers in the query image
corners, ids, _ = aruco.detectMarkers(
image=img,
dictionary=ARUCO_DICT,
parameters=parameters)
#Outline the ChAruco markers found in our image
img = aruco.drawDetectedMarkers(
image=img,
corners=corners)
结果如下:只找到3个marker,不好。
resulting image with found markers
有没有人知道如何显着改善检测器的结果?
不看你的代码我可能会说你选择的图像质量和视角有点差。您可以尝试使用更清晰的标记视图。例如,将标记挂在墙上后退一两步,并尝试在更好的光线下拍照,如果没有必要,不要添加额外的旋转,并保持高对比度 :)。这可能会产生更好的结果。
你的图片翻转了。
用这行代码修复它:
img = cv2.flip(img, 0)
我很难弄清楚为什么 cv2.aruco.detectMarkers() 在使用我的校准板查找多个标记时会遇到问题。摆弄参数并不能从根本上提高质量。字典是正确的,因为我在打印前用数字模板试过了。 这是我从真实图像中检测 CHARuco 标记的方法:
import cv2
from cv2 import aruco
#ChAruco board variables
CHARUCOBOARD_ROWCOUNT = 26
CHARUCOBOARD_COLCOUNT = 26
ARUCO_DICT = cv2.aruco.Dictionary_get(aruco.DICT_4X4_1000)
#Create constants to be passed into OpenCV and Aruco methods
CHARUCO_BOARD = aruco.CharucoBoard_create(
squaresX=CHARUCOBOARD_COLCOUNT,
squaresY=CHARUCOBOARD_ROWCOUNT,
squareLength=5, #mm
markerLength=4, #mm
dictionary=ARUCO_DICT)
#load image
img = cv2.imread('imgs\frame25_crop.png', 1)
test image with CHAruco markers
#initialize detector
parameters = aruco.DetectorParameters_create()
parameters.adaptiveThreshWinSizeMin = 150
parameters.adaptiveThreshWinSizeMax = 186
#Find aruco markers in the query image
corners, ids, _ = aruco.detectMarkers(
image=img,
dictionary=ARUCO_DICT,
parameters=parameters)
#Outline the ChAruco markers found in our image
img = aruco.drawDetectedMarkers(
image=img,
corners=corners)
结果如下:只找到3个marker,不好。
resulting image with found markers
有没有人知道如何显着改善检测器的结果?
不看你的代码我可能会说你选择的图像质量和视角有点差。您可以尝试使用更清晰的标记视图。例如,将标记挂在墙上后退一两步,并尝试在更好的光线下拍照,如果没有必要,不要添加额外的旋转,并保持高对比度 :)。这可能会产生更好的结果。
你的图片翻转了。
用这行代码修复它:
img = cv2.flip(img, 0)