cv2.aruco.detectMarkers在python中不检测标记
我的相机校准和失真矩阵,从aruco_calibration_fromimages.exe获得:
[[3.19439125e+03 0.00000000e+00 1.98509417e+03]
[0.00000000e+00 3.20213561e+03 1.55099552e+03]
[0.00000000e+00 0.00000000e+00 1.00000000e+00]]
[[0.1395281 -0.38313647 0.00505558 0.00237535 0.33952515]]
图片,我尝试检测的地方:
aruco_simple.exe成功
但是Python代码无法找到任何东西:
fs = cv2.FileStorage("./calib_asus_chess/cam_calib_asus.yml", cv2.FILE_STORAGE_READ)
cam_mat=fs.getNode("camera_matrix").mat()
dist_mat=fs.getNode("distortion_coefficients").mat()
gray=cv2.imread('C:UserssteveDropboxProjectskinnektlaseraruco_framesshot1.jpg',0)
adict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_ARUCO_ORIGINAL)
res = cv2.aruco.detectMarkers(gray,dictionary=adict,cameraMatrix=cam_mat,distCoeff=dist_mat)
某些原因,res [0]为空数组。 为什么python版本失败? 感谢名单!
您可能正在使用与您的图片不相符的字典。 根据文件cv2.aruco.DICT_ARUCO_ORIGINAL是5x5:
DICT_ARUCO_ORIGINAL:标准ArUco库标记。 1024个标记,5×5位,最小距离为0
您的图片有6x6图标而不是5x5,这就是为什么它不起作用。
您可以使用函数drawMarker()在图像中绘制字典的某些标记,然后将其打印出来并用于测试。
例如,在这里你可以下载DICT_4X4_50图标。 您可以打印它们并更改代码以使用DICT_4X4_50而不是DICT_ARUCO_ORIGINAL
链接地址: http://www.djcxy.com/p/40973.html上一篇: cv2.aruco.detectMarkers doesn't detect markers in python
下一篇: What’s the best RESTful method to return total number of items in an object?