图像中的numpy元素明智的比较
问题描述:
有很多答案与使用numpy避免在python中的蛮力RGB opencv图像循环有关。我查了很多,但似乎没有完全回答我的需求:图像中的numpy元素明智的比较
给定一个图像,我需要比较像素明智,并根据结果创建一个掩码。是这样的:
# image contains a jpg regular image
data = np.asarray(image)
# Separate each channel
blue, green, red = data.T
print(blue.shape)
#(1024, 1024)
到目前为止好。
我需要这个形象像下面这样的 “白” 面膜:
- >像素是白色的,如果它的red_value> 80 AND red_value-green_value> 20 AND red_value-blue_value> 20
所以经过研究我来到这里:
white = ((red > 80).all and (red-green > 20).all and (red-blue > 20).all)
但是在这个操作之后我不能读白色值。
我试图像许多事情:
print(white.shape)
获取:AttributeError的: 'builtin_function_or_method' 对象没有属性 '形状'
w = np.asarray(white)
获取:阵列( “<” 内置的方法的所有numpy.ndarray对象在0x0408ED68“>”,dtype = object)
有什么建议吗? 谢谢。
答
您的RGB表达一对夫妇的问题,应该由这个例子可以清理:
import numpy as np
r, g, b = [np.random.rand(5,5) for i in range(3)]
w = (r>.5) & (b>.5) & (g>.5) # change your "white = ..." to look similar to this
更明确的:1)当你想要做一个元素 - 不使用all
明智的比较; 2)and
通常不会做你想要的numpy数组,而是使用&
; 3)你需要使用parens来表达这个表达。
很好,它马上工作,谢谢! – dpetrini