嘿,我正在编写一个简单的国际象棋机器人视觉系统,我正在尝试改进以前的一些研究,以允许使用相机和标准国际象棋,并且两者都可以在游戏中移动。到目前为止,我可以在通过网络摄像头获取的图像中定位棋盘,并且我想通过对连续图像进行差异来检测移动,以确定发生了什么变化,然后使用有关棋盘占用的先前信息来检测移动。
我的问题是我目前似乎无法可靠地检测到变化,我当前的管道是这样的:减去两个图像->直方图均衡差异图像->侵蚀和扩张差异图像以删除微小的变化->制作二进制复制并进行距离变换 -> 获取最大的 blob(对应于 DT 并填充该 blob 之后的最大值) -> 再次重复,直到 DT 返回一个小到足以忽略更改的值。
我正在用 OpenCV 和 C++ 编写所有这些代码。但是我的洪水填充似乎总是不能填充斑点,因此大多数情况下我只检测到一个变化。我也尝试过使用cv::inpaint
,但这也无济于事。所以我的问题是;我只是使用了错误的方法还是图灵可以使变更检测更可靠。如果是前者,人们是否可以在合理的时间内建议替代路线,最好在 C++/Python 和/或 OpenCV 中编码?
谢谢