[英]Add pixels in python opencv?
例如,我想计算并添加图像中 100 到 255 之间的像素。 我在想着两个 For。
rows,cols,bands=imgbgr.shape
for i in range(rows):
for j in range(cols):
for k in imgbgr[i,j]:
if 100<=k<=255:
#print imgbgr[i,j]
suma = np.sum(img[i,j])
print suma
由于 OpenCV 返回numpy
数组,您可以使用布尔切片来更快地完成工作:
>>> import numpy as np
>>> img = np.random.randint(0, 255, (3, 5, 5))
>>> img
array([[[236, 205, 246, 94, 224],
[ 28, 143, 159, 167, 54],
[247, 196, 107, 166, 74],
[194, 97, 219, 104, 15],
[143, 105, 107, 218, 240]],
[[ 54, 225, 231, 35, 39],
[223, 54, 0, 141, 47],
[ 69, 20, 222, 244, 143],
[ 34, 60, 174, 155, 243],
[173, 35, 173, 32, 246]],
[[229, 247, 102, 47, 208],
[201, 182, 172, 247, 171],
[ 86, 76, 182, 144, 58],
[155, 243, 37, 220, 75],
[171, 251, 60, 216, 43]]])
>>> cond = (img >= 100) & (img <= 255)
>>> cond
array([[[ True, True, True, False, True],
[False, True, True, True, False],
[ True, True, True, True, False],
[ True, False, True, True, False],
[ True, True, True, True, True]],
[[False, True, True, False, False],
[ True, False, False, True, False],
[False, False, True, True, True],
[False, False, True, True, True],
[ True, False, True, False, True]],
[[ True, True, True, False, True],
[ True, True, True, True, True],
[False, False, True, True, False],
[ True, True, False, True, False],
[ True, True, False, True, False]]], dtype=bool)
>>> img[cond]
array([236, 205, 246, 224, 143, 159, 167, 247, 196, 107, 166, 194, 219,
104, 143, 105, 107, 218, 240, 225, 231, 223, 141, 222, 244, 143,
174, 155, 243, 173, 173, 246, 229, 247, 102, 208, 201, 182, 172,
247, 171, 182, 144, 155, 243, 220, 171, 251, 216])
>>> img[cond].sum()
9360
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.