我正在开发一个 Android 应用程序,用于根据一系列照片分析国际象棋游戏。为了处理图像,我使用 OpenCV。我的问题是如何检测图片上有玩家的手?因为我想过滤这些照片并只分析那些只有棋盘的照片。
到目前为止,我成功地从这样的图像中获得了 Canny 原图
我能得到那个精明
.
但是我不知道接下来我能做什么......
我用来获取 Canny 的代码:
Mat gray, blur, cannyed;
cvtColor(img, gray, CV_BGR2GRAY);
GaussianBlur(gray, blur, Size(7, 7), 0, 0);
Canny(blur, cannyed, 50, 100, 3);
我非常感谢任何关于下一步该做什么以及我可以使用哪些 OpenCV 函数的想法和建议。
最佳答案
你在棋盘上有一个非常好的频谱。一只手伸进去会扰乱黑白方 block 之间规则过渡所建立的频率。尝试移动一个更大的正方形(假设是 4.5 x 4.5 正方形的大小),看看频率会发生什么变化。
如果您将一系列照片拍成电影,另一种方法是分析 Action 。采用连续帧的差异(首先对它们进行低通滤波)来检测运动。及时过滤运动(跨几帧)。然后对这些运动进行阈值处理以获得二值图像。腐 eclipse 二元形状以过滤掉小的移动物体(噪音、国际象棋图形),能够检测棋盘上是否有任何更大的移动形状(例如手)。
关于opencv - 使用opencv检测棋盘上方的手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51283472/