嗨,那里
我想提高aruco.detectMarkers中标记检测的准确性。因此,我想使用Corner Refine Method with CORNER_REFINE_SUBPIX,但不了解如何在python中实现。
示例代码:
frame = cv.imread("test.png")
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
para = aruco.DetectorParameters_create()
det_corners, ids, rejected = aruco.detectMarkers(gray,dictionary,parameters=para)
aruco.drawDetectedMarkers(frame,det_corners,ids)
我尝试过的事情:
para.cornerRefinementMethod()
para.cornerRefinementMethod(aruco.CORNER_REFINE_SUBPIX)
para.cornerRefinementMethod.CORNER_REFINE_SUBPIX
para = aruco.DetectorParameters_create(aruco.CORNER_REFINE_SUBPIX)
para = aruco.DetectorParameters_create(para.cornerRefinementMethod(aruco.CORNER_REFINE_SUBPIX))
它们没有用,我是python ArUco的新手,所以我希望有一个简单而明显的解决方案。
我还想实现Documentation(第4页)中的封闭标记。您是否知道是否有办法在python中生成这些封闭的标记?
答案 0 :(得分:0)
关于问题的第一部分,您非常接近:我认为您的麻烦在于切换和调整“ para”选项。如果是这样,您只需要在参数对象中设置相应的值,如
para.cornerRefinementMethod = aruco.CORNER_REFINE_SUBPIX
请注意,“ aruco.CORNER_REFINE_SUBPIX”只是一个整数。您可以通过在控制台中输入type(aruco.CORNER_REFINE_SUBPIX)
进行验证。因此,将值分配给“ para”对象的工作原理如上所述。
您可能还想调整para.cornerRefinementWinSize
,它似乎是以代码像素为单位而不是实际图像像素为单位实现的。
关于第二部分,您可能必须编写一个函数,在角点处添加框,您可以使用detectMarker
函数获得该框。请注意,拐角点始终按顺时针顺序排列,因此您可以轻松分配正确的偏移值(例如“上和左”,“上和右”等)。
答案 1 :(得分:0)
para.cornerRefinementMethod = 1 可能有效。