【发布时间】:2020-08-18 20:21:23
【问题描述】:
我有一张图像,我想找到零区域(黑色)的强度。我的想法是在黑色区域周围画一个小盒子。这是我期望的结果。
我的尝试如下;
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