gpt4 book ai didi

python - 查找包含内容的区域并获取其边界矩形

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:48 24 4
gpt4 key购买 nike

我正在使用 OpenCV 4 - python 3 - 在黑白图像中查找特定区域。

此区域不是 100% 填充的形状。白线之间可能有一些间隙。

这是我开始处理的基础图像: base

这是我期望的矩形——用 photoshop 制作——: expected

我用霍夫变换线得到的结果 - 不准确 - wrong result

基本上,我从第一张图片开始,我希望找到您在第二张图片中看到的内容。

知道如何获取第二张图片的矩形吗?

最佳答案

我想提出一种可能比 fmw42's answer 中的解决方案计算成本更低的方法仅使用 NumPy 的 nonzero功能。基本上,找到两个轴的所有非零索引,然后获得最小值和最大值。由于我们这里有二进制图像,因此这种方法效果很好。

让我们看一下下面的代码:

import cv2
import numpy as np

# Read image as grayscale; threshold to get rid of artifacts
_, img = cv2.threshold(cv2.imread('images/LXSsV.png', cv2.IMREAD_GRAYSCALE), 0, 255, cv2.THRESH_BINARY)

# Get indices of all non-zero elements
nz = np.nonzero(img)

# Find minimum and maximum x and y indices
y_min = np.min(nz[0])
y_max = np.max(nz[0])
x_min = np.min(nz[1])
x_max = np.max(nz[1])

# Create some output
output = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
cv2.rectangle(output, (x_min, y_min), (x_max, y_max), (0, 0, 255), 2)

# Show results
cv2.imshow('img', img)
cv2.imshow('output', output)
cv2.waitKey(0)
cv2.destroyAllWindows()

我从 fmw42 的答案中借用了裁剪后的图像作为输入,我的输出应该是相同的(或最相似的):

Output

希望(也)有帮助!

关于python - 查找包含内容的区域并获取其边界矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58473998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com