python - AcUro 使用 Python 和 OpenCV 提供的边角优化方法 CORNER_REFINE_SUBPIX
问题描述
你好呀
我想从 aruco.detectMarkers 提高标记检测的准确性。因此,我想将Corner Refine Method 与 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 很陌生,所以我希望有一个简单而明显的解决方案。
我还想实现文档中的封闭标记(第 4 页)。您是否碰巧知道是否有办法在 python 中生成这些封闭的标记?
解决方案
关于您问题的第一部分,您非常接近:我认为您的麻烦在于切换和调整“para”选项。如果是这样,您只需要在参数对象中设置相应的值,如
para.cornerRefinementMethod = aruco.CORNER_REFINE_SUBPIX
请注意,“aruco.CORNER_REFINE_SUBPIX”只是一个整数。type(aruco.CORNER_REFINE_SUBPIX)
您可以通过在控制台中输入来验证这一点。因此,像上面提到的那样为“para”对象赋值。
您可能还想调整para.cornerRefinementWinSize
似乎是以代码像素为单位实现的,而不是实际的图像像素单位。
关于第二部分,您可能必须编写一个函数,在角点添加框,您可以使用该detectMarker
函数获得。请注意,角点始终按顺时针方向排列,因此您可以轻松分配正确的偏移值(如“上与左”、“上与右”等)。
推荐阅读
- javascript - 如何在reactjs中取消选中复选框清空值?
- reactjs - deck.gl GeoJsonLayer:点击时更新特征颜色
- react-native - 如何在 React Native 中使用过渡/导航/路由器仅更改屏幕上的一个组件
- agda - 处理集合中的异构路径
- java - 从静态方法调用静态线程本地 getter 方法时获取空值
- python - 如何将另一个程序的窗口移动到特定的 x 和坐标?
- php - PHP 响应 SSDP
- java - 检索 Firebase 数据库节点后如何动态制作模型?
- reactjs - 如何使单选按钮出现在 react.js 中
- javascript - 为什么当 redux 存储更新时我的组件不重新渲染?