c – 使用OpenCV工具检测国际象棋从连续图像差异中移动

c – 使用OpenCV工具检测国际象棋从连续图像差异中移动,第1张

概述嘿,我正在编写一个简单的国际象棋游戏机器人的视觉系统,我正在尝试改进以前的一些研究,以允许使用相机和标准国际象棋,并允许两者在游戏中移动.到目前为止,我可以在通过网络摄像头获取的图像中找到电路板,我想通过获取连续图像的差异来检测移动,以确定已更改的内容,然后使用有关电路板占用率的先前信息来检测移动. 我的问题是我现在似乎无法可靠地检测到更改,我当前的管道是这样的: 减去两张图片 – >直方图均衡差 嘿,我正在编写一个简单的国际象棋游戏机器人的视觉系统,我正在尝试改进以前的一些研究,以允许使用相机和标准国际象棋,并允许两者在游戏中移动.到目前为止,我可以在通过网络摄像头获取的图像中找到电路板,我想通过获取连续图像的差异来检测移动,以确定已更改的内容,然后使用有关电路板占用率的先前信息来检测移动.

我的问题是我现在似乎无法可靠地检测到更改,我当前的管道是这样的:
减去两张图片 – >直方图均衡差异图像 – >侵蚀和扩张差异图像以消除微小变化 – >制作二进制副本并进行距离变换 – >获得最大的斑点(对应于DT和洪水填充后的最高值) – >再次重复,直到DT返回一个小到足以忽略变化的值.

我在OpenCV和C中编写所有这些代码.但我的洪水填充似乎总是要么不填充blob,因此大多数情况下我只是检测到一个变化.我也试过使用cv :: inpaint,但这也没有帮助.所以我的问题是;我只是使用错误的方法或以某种方式图灵可以使变化检测更可靠.如果是前者,人们是否可以建议替代路线,最好在合理的时间内用C / Python和/或OpenCV编写?

谢谢

解决方法 如果不移动电路板同时移动电路板,则可以独立解决在电路板上进行固定和检测工件移动的问题.

关于我如何处理它的一些想法:

检测板的方向

您必须能够处理正在旋转的板,并且只要保持一定的角度就可以移动,让您看到碎片.如果板上有东西可以轻松识别(例如每个角落上的标记),这将有所帮助,这样如果你失去方向(例如有人将棋盘完全移开相机),你可以很容易地找到它.

为了跟踪电路板,您需要在3D空间中对相机相对于电路板的位置进行建模.这与确定相机在固定板周围移动的位置相同.一个问题Egomotion.一旦你解决了,你就可以进入下一个阶段,即检测运动和跟踪物体.

检测件的运动

这可能是问题的简单部分.在视频中有很多用于对象检测的算法.我只想补充一点,你可以使用“关键”帧.我的意思是识别那些在单次移动之前和之后只能看到电路板的帧.例如你没有看到手移动它遮挡碎片等.一旦你有前/后框架,你就可以弄清楚它移动了什么以及它相对于棋盘的位置.

如果您假设连续性(即,您已经跟踪了自板的初始布置以来所有的移动,这是众所周知的),您可能无法识别每个部件的形状.

总结

以上是内存溢出为你收集整理的c – 使用OpenCV工具检测国际象棋从连续图像差异中移动全部内容,希望文章能够帮你解决c – 使用OpenCV工具检测国际象棋从连续图像差异中移动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1239304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存