【问题标题】:Python: Find black background in an imagePython:在图像中查找黑色背景
【发布时间】:2020-08-18 20:21:23
【问题描述】:

我有一张图像,我想找到零区域(黑色)的强度。我的想法是在黑色区域周围画一个小盒子。这是我期望的结果。

(x, y) 是方框的中心。我在它周围画了40单元框

我的尝试如下;

import cv2
from random import *

img = cv2.imread("path/to/image.png", cv2.IMREAD_GRAYSCALE)

img = cv2.resize(img, (600, 800)) 
rows,cols = img.shape[:2]

try:
    for i in range(100):
        x = randint(1, rows)    # Pick a random number between 1 and rows.
        y = randint(1, cols)    # Pick a random number between 1 and rows.

        while True:
            sum_intensity = 0
            for i in range(x-20, x+20):
                for j in range(y-20, y+20):
                    intensity = img[i,j]
                    sum_intensity += intensity

            if sum_intensity == 0:
                print("zero intensity found")
                cv2.rectangle(img, (x-20, y+20), (x+20, y-20), (255, 255, 255), 2)
                cv2.imwrite("path/to/save.png", img) 
                break

            else:
                print("No zero intensity")
                break

except:
    pass

生成框的一个示例如下..您可以看到其中有与灰色区域重叠的框,我想避免!我必须选择完整的背景(黑色)。另外我只需要一个盒子......不需要看到其中的几个。我知道我可以使用布尔变量,但不知道如何在 python 中使用。

【问题讨论】:

  • 始终想着提供原始图像,无需注释和预处理。
  • 感谢您的建议。

标签: python python-3.x image-processing computer-vision


【解决方案1】:

如果我理解正确,您想找到一个仅包含黑色(值 0)的 41 x 41 正方形。

您可以通过执行 41 x 41 的膨胀并选择任何黑色像素(即所需正方形的中心)来实现这一点。 (为了清晰起见,图像被二值化;白色方块是由于原始图像中的虚假像素造成的。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多