python - 如何找到模板和旋转图像之间的正确点对应关系?

标签 python opencv correspondence

我有一个 .dxf 文件,其中包含一个绘图(模板),它只是一个有孔的部分,我从所述绘图中成功提取了列表 [[x1,y1,d1] 中给出的孔的坐标及其直径, [x2,y2,d2]...[xn,yn,dn]].

在此之后,我拍摄了这件作品的照片(与模板相同),经过一些图像处理后,我获得了检测到的孔的坐标和轮廓。不过图中这 block 是可以相对模板旋转的。

如何进行正确的孔对应(在模板中的孔坐标和图像中孔的旋转坐标之间),以便我可以知道图像中每个孔对应的直径?

有什么点排序的方法可以给我这个对应关系吗? 我正在使用 Python 和 OpenCV。

所有答案将不胜感激。谢谢!!! 模板图像:https://ibb.co/VVpWmKx 在模板图像中,轮廓被绘制为与 .dxf 文件中给定的大小相同,这与从相机拍摄的工件轮廓的大小(以像素为单位)不同。

从相机拍摄的处理过的图像,显​​示了工件的轮廓:https://ibb.co/3rjCg5F

我已经尝试过 OpenCV 的特征匹配函数(ORB 算法),所以我可以获得图片中的部分相对于模板旋转的旋转角度? 但我仍然无法获得这个旋转角度?如何使用图像描述符获取旋转角度?

这是解决这个问题的最佳方法吗?有没有更好的方法来解决这个问题?

最佳答案

考虑到提取轮廓的图像,你可能不需要像OCV库的特征匹配算法那么重的东西。一种方法是获取作品的最外部轮廓并获取它的 cv::minAreaRect。生成的旋转矩形将为您提供角度。现在您只需要确定对称性是否匹配,因为它可能会被翻转。这也可以通过多种方式来完成。最简单的方法之一(不包括比例可能会关闭的事实)是您再次获取最外部的轮廓,填充它并计算与模板重叠的点的百分比。具有正确对称方向的那个应该在几乎所有点上都匹配。鉴于匹配 block 和模板的比例是相同的。

关于python - 如何找到模板和旋转图像之间的正确点对应关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57652831/

相关文章:

python - 如何通过按按钮更新标签文本

python - 在 PyQt5 中显示和隐藏多个窗口

python - 合并子图上的所有 x 标题

python - 如何使用 Python 日志库写入 CSV?

opencv - OpenCV CUDA错误-217尝试执行我的自定义功能

EXCEL如何找到列的总和,但仅适用于在不同列但在相应行中具有特定值的值

opencv - 无法运行 tune_blockmatcher 和 image_to_pointcloud 程序

c++ - OpenCV 未定义对 Mat 的引用

matlab - 假定对应