我想检查每个像素是否为红色。因此,我准备了一个白色图像,在那里我打印了一些红线。红线正是这种颜色:(0, 0, 255)
使用以下代码时,图像中未检测到红色。怎么了
import cv2
import numpy as np
img = cv2.imread(r"....\red.png")
x,y,z = img.shape
print(x,y,z)
for i in range(x):
for j in range(y):
r = np.where((img[i,j,0]==0 & img[i,j,1]==0 & img[i,j,2]==255))
redarray = np.array(r)
red = np.size(redarray)
print("r: ", r)
print("redarray: ", redarray)
print("red: ", red)
您不需要循环来完成这一点。numpy的优势之一
np.where
只需做一点工作:按照您的示例,您需要创建一个if语句,该语句将在像素为红色时构建像素列表
redarray
在您的帖子中,每个循环迭代只反映当前像素。你没有在那里建立一个列表。因此,类似这样的方法应该有效:相关问题 更多 >
编程相关推荐