【问题标题】:Faster way to calculate pixel intensity(color value) without iterating through all the pixels in image无需遍历图像中的所有像素即可更快地计算像素强度(颜色值)
【发布时间】:2019-03-12 03:10:36
【问题描述】:
我正在执行一个操作,如果像素值 >0,我必须计算所有像素强度的总和。目前,我正在遍历每个像素,这比较慢。谁能建议一种更快的方法来改进我的代码?
h, w = image.shape[:]
total_intensity = 0
for x in range(h):
for y in range(w):
if (image[x][y] > 0):
total_intensity += image[x][y]
【问题讨论】:
标签:
python
opencv
image-processing
【解决方案1】:
如果图像是一个 numpy 数组,你可以这样做:
total_intensity = image[image > 0].sum()
如果你有一个非常大的图像,你应该担心总和的溢出问题,所以我强烈建议先投射图像
image = np.int64(image)
【讨论】:
-
@snehipachchigar:如果此答案对您有用,您应该单击答案左侧投票计数下方的复选标记,而不是评论“谢谢”。见here。这就是说谢谢的方式。
【解决方案2】:
你可以这样做:
total_intensity = sum(sum(filter(lambda i: i > 0, image[j])) for j in image)
你的最低强度条件为 0