我正在尝试构建一些东西来分析我的摄像头,以突出显示非黑色的像素(以自动进行一些跟踪)
我已经尝试使用OpenCV进行如下测试:np.where(np.all(img>150,2),255,0)
其中img是摄像机供稿,但我想这样做:
np.where(np.all(img>150,2),np.array(0,255,0),img)
因此只有被发现为“非黑色”的图片是绿色,而其他与以前相同,而不是白色或黑色。
import numpy as np
import cv2
camera = cv2.VideoCapture(0)
while 1:
ret_val, image = camera.read()
if not ret_val:
cv2.destroyAllWindows()
camera.release()
break
img=image[len(image)//2:len(image)]
A=np.where(np.all(img>150,2),255,0)
cv2.imshow("output", np.uint8(A))
我想将A作为数组(n,m,3)而不是array(n,m),其中n,m是长度和宽度 预先感谢。
答案 0 :(得分:0)
如果我理解正确,您希望将“非黑色”像素转换为绿色(其中“非黑色”表示R,G和B值均大于150)。
您的问题的简单答案是将其替换为
A=np.where(np.all(img>150,2),255,0)
使用
A = img.copy()
A[np.where(np.all(A > 150, 2))] = np.array([0, 255, 0])
np.where(np.all(A > 150, 2))
返回所有“非黑色”像素的索引,因此您要为这些索引分配值[0,255,0]。其他所有像素均保持不变。
如果您可以修改img
,也可以就地执行此操作以避免创建另一个数组:
img[np.where(np.all(img > 150, 2))] = np.array([0, 255, 0])