我正在尝试使用 OpenCV 找到拼字游戏 field 中的所有方 block 。
这是输入图像:
我设法将此图像转换为 500x500 灰度图片:
之后我尝试检测方 block 。
首先,我尝试使用 thresh = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 1, 11, 2)
生成此图像:
然后我用_,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
来找到方 block 。我过滤了大于 500 但小于 1000 的轮廓区域。
然后我在原始图像上绘制找到的轮廓,看看是否找到了所有正方形:
我发现几乎所有的方 block 都被检测到,但由于某种原因,浅色的方 block 无法被检测到。 我想知道如何找到剩余的较浅的方 block ,或者我是否做错了什么。
最佳答案
在获得 500x500 灰度图片后,为什么还需要所有这些复杂功能?你有一张图片,你知道有 15 行和 15 列,只需将图片分成单独的方 block ,你就会得到你的板。
无需进行任何 OpenCV 分析,一旦获得了方 block ,您就可以 100% 确定方 block #0 以及方 block #3、7 等都有标记。
关于Python OpenCV 使用轮廓查找正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51579469/