【发布时间】:2023-04-03 05:12:01
【问题描述】:
我的这张图片有 9 个小盒子(黑色和白色盒子),每个盒子的宽度 = x 和高度 =y。我需要每个小盒子的像素值的平均值。
最初我将图像转换为数组
image = cv2.imread('x.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
这是我尝试过的,但有错误。
box_pixels = []
temp = []
p, q, r, s = 0, x, 0, y
while q <= gray.shape[0]:
temp.append([])
while s <= gray.shape[1]:
for i in range(p, q):
for j in range(r, s):
temp.append(gray[i][j])
r = s
s = s+y
p = q
q = q + x
box_pixels.append(temp)
print(box_pixels)
我不知道该怎么办?
【问题讨论】:
-
这听起来像是内核问题。你最终想要做什么?模糊图像?
-
不,不是关于模糊,如果我得到一个盒子的意思,我可以将它视为那个盒子的像素(就像是黑盒子或白盒子)
-
所以,如果我理解正确,您基本上只是想使用平均值来调整图像大小?为什么不将
cv2.resize
与您选择的插值器一起使用? -
绝对有可能用两个嵌套循环来做你想做的事情。但是,这种效率不会令人惊讶,因为它需要大量的模组。不过,执行 4 次嵌套循环不一定是低效的。如果您在外部两个循环 (y, x) 中遍历每个框,然后在内部两个循环中遍历这些框,那么您只访问每个像素一次,这仍然是有效的。
-
是的,先生!我刚刚阅读了一些文档,你想要的插值器是
INTER_AREA
,它完全符合你目前正在做的事情,除了它处理更多的情况。我将在答案中写一些代码作为示例。
标签:
python
python-3.x
opencv
image-processing
computer-vision
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在python中查找图像中每个框的平均值 - Python技术站