Python OpenCV 使用轮廓查找正方形

标签 python opencv

我正在尝试使用 OpenCV 找到拼字游戏 field 中的所有方 block 。

这是输入图像:

Input image

我设法将此图像转换为 500x500 灰度图片:

Grayscale image

之后我尝试检测方 block 。

首先,我尝试使用 thresh = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 1, 11, 2) 生成此图像:

Adaptive threshold

然后我用_,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)来找到方 block 。我过滤了大于 500 但小于 1000 的轮廓区域。

然后我在原始图像上绘制找到的轮廓,看看是否找到了所有正方形:

Result

我发现几乎所有的方 block 都被检测到,但由于某种原因,浅色的方 block 无法被检测到。 我想知道如何找到剩余的较浅的方 block ,或者我是否做错了什么。

最佳答案

在获得 500x500 灰度图片后,为什么还需要所有这些复杂功能?你有一张图片,你知道有 15 行和 15 列,只需将图片分成单独的方 block ,你就会得到你的板。

无需进行任何 OpenCV 分析,一旦获得了方 block ,您就可以 100% 确定方 block #0 以及方 block #3、7 等都有标记。

关于Python OpenCV 使用轮廓查找正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51579469/

相关文章:

python - 将转义字符写入文件,以便字符可见

arrays - cv.fillPoly生成零数组,不读取输入

python - 在找到的边界python opencv中提取内容?

java - 如何在 Netbeans-Ubuntu 中使用 OpenCV for Java

matlab - 如何设置 Mat to Mat with a mask? (开放式简历)

python - 未传递参数时引发类异常或类异常实例

python - Pip 从 github monorepo 中安装 python 库

python - 从 C Windowsx64 调用 Cython 函数

python - 如何将word2vec导入TensorFlow Seq2Seq模型?

python - 使用opencv同时打开两个视频吗?第二次开始后