|
1
15
类似的问题已经讨论过: How to recognize rectangles in this image? 至于您的数据,您试图查找的矩形是唯一的黑色对象。所以你可以试着做一个阈值二值化:黑色像素是那些所有三个RGB值都小于40的像素(我根据经验发现)。此简单操作使您的图片看起来如下所示: 之后,您可以应用Hough变换来查找直线(在我提到的主题中讨论),或者您可以更轻松地进行。计算黑色像素到X轴和Y轴的积分投影(到X的投影是X_i的向量,即黑色像素数,因此它的第一个坐标等于X_i)。因此,可以得到x和y值作为投影的峰值。然后查看所有可能被发现的x和y限制的线段(如果(x_i,y_j)和(x_i,y_k)之间有很多黑色像素,那么可能有一条线)。最后,将线段组成矩形! |
|
|
2
6
最后,我只是在我原来的方法的基础上,按照罗伯特在评论我的问题时提出的建议去做。在我得到矩形列表后,我运行并计算每个矩形的平均颜色。我检查平均颜色的红色、绿色和蓝色分量是否都在灰色和蓝色矩形颜色的10%以内,如果是,我保存矩形,如果不是,我丢弃矩形。这个过程给了我这样的东西:
从这里,获得我需要的信息(方向、起点和每个矩形的长度,将游戏窗口视为6x6网格)非常简单。 |
|
3
4
这里有一个完整的Python解决方案。其主要思想是:
下面是每个检测到的矩形轮廓的可视化
结果
|
|
|
4
3
块看起来像位图-为什么不使用简单的模板匹配,针对每个块大小/颜色/方向使用不同的模板? |
|
|
5
2
因为这些线比矩形的边界要细得多,所以我首先应用 morphological operations 使用如下所示的结构图元:
应删除小于两个像素宽的线条。删除小线条后,OpenCV的矩形查找算法很可能会为您完成其余的工作。
侵蚀可以通过函数在OpenCV中完成
|
|
|
6
0
尝试一个像哈里斯角检测器这样的角检测器。一般来说,在多分辨率下尝试这种方法也是一个好主意:对不同的放大倍数进行一些预处理。 |
|
|
VeceluXa · 在Android中将黑白位图转换为单通道JPEG 2 年前 |
|
|
Mohamed Obeid · 在灰度图像上散射网格 2 年前 |
|
|
Pete · 三维体积与其主轴对齐 3 年前 |
|
|
Doofenmirtz Mirtz · 录制视频中特定对象的角度检测 3 年前 |