- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
嘿,我正在编写一个简单的下国际象棋机器人的视觉系统,我正在尝试改进以前的一些研究,以允许使用相机和标准国际象棋,并且都允许在游戏过程中移动。到目前为止,我可以在通过网络摄像头获取的图像中找到棋盘,我想通过获取连续图像的差异来检测移动以确定发生了什么变化,然后使用有关棋盘占用的先前信息来检测移动。
我的问题是目前我似乎无法可靠地检测到变化,我当前的管道是这样的:两幅图像相减 -> 直方图均衡差值图像 -> 腐 eclipse 和扩张差异图像以去除微小变化 -> 制作二进制拷贝并进行距离变换 -> 获取最大的 blob(对应 DT 后的最大值,并对该 blob 进行洪水填充) -> 再次重复,直到 DT 返回一个小到足以忽略变化的值。
我正在用 OpenCV 和 C++ 编写所有这些代码。但是我的洪水填充似乎总是不填充 Blob ,因此大多数情况下我只检测到一个变化。我也尝试过使用 cv::inpaint
但这也没有帮助。所以我的问题是;我只是使用了错误的方法还是图灵可以使变化检测更可靠。如果是前者,人们能否建议替代路线,最好在合理的时间内使用 C++/Python 和/或 OpenCV 进行编码?
谢谢
最佳答案
固定棋盘和检测棋子移动的问题可以独立解决,假设一个人不移动棋盘同时也移动棋子..
关于我将如何处理它的一些想法:
检测板的方向
您必须能够处理原地旋转的棋盘,以及四处移动,只要保持一定的角度,让您可以看到棋子。如果板上有您可以轻松识别的东西(例如每个角上的标记),这会有所帮助,这样如果您失去方向(例如有人将板完全移离相机),您可以轻松地再次找到它。
为了跟踪电路板,您需要在 3D 空间中对相机相对于电路板的位置进行建模。这与确定围绕固定板移动的相机位置的问题相同。 Egomotion的一个问题.一旦你解决了这个问题,你就可以进入下一阶段,即检测运动和跟踪对象。
检测棋子的移动
这可能是问题中比较简单的部分。有很多算法可用于视频中的对象检测。我只想补充一点,您可以使用“关键”帧。我的意思是识别那些你只看到一步棋前后棋盘的帧。例如你看不到移动它的手遮挡了碎片等。一旦你有了前/后框架,你就可以弄清楚移动的是什么以及它相对于板的位置。
如果您假设连续性(即,您已经跟踪了棋盘初始排列以来的所有运动,这是众所周知的),您可能无法识别每个棋子的形状。
关于c++ - 使用 OpenCV 工具从连续的图像差异中检测国际象棋走法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906170/
我想递归地遍历一个目录,但我希望 python 在遇到包含超过 100 个文件的目录时从任何单个 listdir 中断。基本上,我正在搜索 (.TXT) 文件,但我想避免使用包含大型 DPX 图像序列
我正在尝试遍历列表(例如 sql 行)并为每一行触发例程。问题是传递给函数的值不会在运行时进行评估,因此根据函数执行所需的时间,它可能会使用下一行中的任何值而不是当前行。 我知道我可以在普通函数中提取
我需要以毫秒为单位的时间来处理大量事务,因此我想要正确且快速的东西。下面的工作会做得最好吗? : iMilli := int((time.Nanoseconds() % 1e6) / 1e3
我有以下目录/文件设置(已简化): Ce +---top.txt +---X0.0 | | | +---Y0.0 | | | | |
我遇到了类似的问题: Connecting to Redis To Go with PHP 基本上,我在 redis 中有这个 uri: redis://myusername:foopassword@
我阅读了下面的主题 Go: multiple value in single-value context 但我不明白这个解释在我的案例中。可能是因为我想使用 interface 在下面的情况下,我得到
我有一个模板,我想使用 text/template 评估各个字段包裹。我很难弄清楚评估应该如何工作,因为下面的代码似乎失败了。模板包是否足够强大以处理此类评估? type something stru
我编写了简单的服务器程序来从客户端接收数据。我有点不明白有时我从函数中得到错误 read tcp4 IP:PORT i/o timeoutint, err := conn.Read([]byte) 未
我只需要解码和更新 json 对象的特定值。问题是我不知道对象的完整结构。 encoding/json 包“忽略”/截断结构中未提供的字段,因此在编码时这些字段将丢失。 我想知道是否可以只解码我知道的
我正在尝试使用带有 C++ 目标的 ANTLR4 来实现 TSql 解析器。我抓取了语法文件 here .该jar用于制作相应的源文件(因冲突将TSqlParser.cpp中的NULL全部改为null
我在 win7 中使用 python 3.3.3 - 我只想列出网络目录中的所有文件。 import os for root, dirs, files in os.walk("X:\\network\
当我运行 go 脚本 ( go run example.go ) 时出现此错误 /home/travis/.gvm/gos/go1.1.2/src/pkg/github.com/user/exampl
我正在尝试通过 gmail API 发送电子邮件使用 Go但我发现文档非常有缺陷/令人困惑。这一次我看不到收据字段和电子邮件正文。 我不需要上传任何东西,所以我找到了 Simple upload ,
本人是一名专业的windows/.Net开发者,一直在慢慢学习rails/ruby/python/etc。在我有空的时候。在过去 8 年左右的时间里,我也一直在使用各种 Linux 发行版。然而,有一
我想知道是否可以使用 std http 来响应 http 请求打包并仍然保持 go 例程事件(例如运行任务密集型任务)。用例是我需要接收一个 http 请求,然后在几分钟后回调该服务 最佳答案 只需从
我想知道关于指针的最佳实践是什么。我应该在结构上还是在其字段上定义它们。我虽然定义一个指向结构本身的指针是有意义的,但这里有一个我觉得很有趣的例子。如果所有字段都是指针,为什么我不应该使用指向整个结构
我是一名优秀的程序员,十分优秀!