비디오의 오브젝트를 색상으로 추적하려고합니다. 나는이 코드를 단순화 할 수 있습니다 :파이썬에서 for-loop의 이미지 마스킹을 논리적 인덱싱으로 대체하려면 어떻게해야합니까?
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
[논리적 색인 생성에 대한 numpy 문서] (https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html)가 대답하지 않은 것은 무엇입니까? 그곳에서 예제들을 시험해 보시고, 그것들과 혼란스러운 점이 있다면 명시 적으로 그것들을 게시하십시오. –
어쨌든'색조 [(색조 <110) | (색조> 140)] = 0'이 당신이 찾고있는 것입니다. 편집 : 실제로 아래의 솔루션은 당신이 첫 번째 채널을 기반으로 만 마스킹했다는 사실에 주목합니다. 나는 그걸 놓쳤습니다 --- 그걸로 가십시오. –
@AlexanderReynolds OP는 '색조'의 첫 번째 채널을 따라 색인을 생성합니다. 그래서 우리는'hue [..., 0]'을 필요로합니다. – Divakar