角点细化方法,角点细化子文件,来自AcUro,使用Python和OpenCV

角点细化方法,角点细化子文件,来自AcUro,使用Python和OpenCV,python,opencv,aruco,Python,Opencv,Aruco,你好 我想提高aruco.detectMarkers标记检测的准确性。所以,我想使用,但我不明白它是如何在python中实现的 示例代码: frame = cv.imread("test.png") gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) para = aruco.DetectorParameters_create() det_corners, ids, rejected = aruco.detectMarkers(gray,dictionar

你好

我想提高aruco.detectMarkers标记检测的准确性。所以,我想使用,但我不明白它是如何在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还很陌生,所以我希望有一个简单明了的解决方案


我还想实现(第4页)中的封闭标记。你知道python中是否有生成这些封闭标记的方法吗?

关于你问题的第一部分,你已经非常接近了:我想你的问题在于切换和调整“para”选项。如果是这样,您只需要在parameters对象中设置相应的值,如

para.cornerRefinementMethod = aruco.CORNER_REFINE_SUBPIX
请注意,“aruco.CORNER\u REFINE\u SUBPIX”只是一个整数。您可以通过在控制台中键入
type(aruco.CORNER\u REFINE\u SUBPIX)
来验证这一点。因此,将值指定给“para”对象的工作方式如上所述

您可能还需要调整
段落cornerRefinementWinSize
,它似乎是以代码像素为单位实现的,而不是实际的图像像素单位


关于第二部分,您可能需要编写一个函数,在角点处添加框,您可以使用
detectMarker
函数获得这些框。请注意,角点始终按顺时针顺序排列,因此您可以轻松指定正确的偏移值(如“向上和向左”、“向上和向右”等)

para.cornerRefinementMethod=1 可能有用