我试图通过颜色跟踪视频中的对象。我可以简化这段代码:
while True:
ret, frame = cap.read()
if not ret:
break
height, width, channel = frame.shape
hue = cv2.cvtColor(frame, cv2.COLOR_RGB2HSV)
for i in range(width):
for j in range(height):
if (hue[j, i, 0] < 110 or hue[j, i, 0] > 140):
hue[j, i, 0] = 0
hue[j, i, 1] = 0
hue[j, i, 2] = 0
答案 0 :(得分:0)
使用masking
删除两个嵌套的for循环,如此 -
hue[(hue[...,0] < 110) | (hue[...,0] >140)] = 0
这是有效的,因为使用(hue[...,0] < 110) | (hue[...,0] >140)
创建的掩码与hue
的前两个dims具有相同的形状,并且用于屏蔽hue
,因为它沿着第一个进行索引它的两个模糊,适用于沿最后一个轴的所有元素。这可以完成三个步骤的任务:hue[j, i, 0] = 0; hue[j, i, 1] = 0; hue[j, i, 2] = 0;
一次完成。