我正在开发一个可以识别GO 板并为其创建SGF 文件的 Android 应用程序。
我需要检测整个木板以使其变形并能够找到正确的线条和石头,如下所示。
(来源:八十二.axc.nl)
现在我使用 Opencv RGB Mat 并执行以下操作:
- 分离通道
精明的独立频道
Imgproc.Canny(channel, temp_canny, 30, 100);
组合(按位或)所有通道。
Core.bitwise_or(temp_canny, canny, canny);
- 找到电路板轮廓
我仍然无法始终如一地检测到棋盘,因为有些线条会消失,如下图所示,棋盘上的黑线和石头清晰可见,但在某些地方缺少棋盘边缘。
(来源:八十二.axc.nl)
我该如何改进这种检测?或者我应该实施多种检测方法并在其中一种失败时在它们之间切换..
*重要的要记住*
- 围棋板颜色不同
- 围棋板可以是空的或完全装满石头,
这意味着我不能依赖检测板上的外部黑线 - 背景并不总是纯白色
这是我想检测的一小部分带有围棋板的图片
* 更新 * 23-05-2016
我有点用opencv来解决这个问题的灵感用完了,所以非常感谢新的灵感!!!与此同时,我开始使用机器学习,第一个结果很好,我会及时通知你,但仍然对创建 opencv 实现寄予厚望。