ビデオのオブジェクトを色で追跡しようとしています。私はこのコードを単純化することができますので、同じようforループのイメージマスキングを、Pythonの論理インデックスに置き換えるにはどうすればよいですか?
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 docs on logical indexing](https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html)があなたに答えてくれないのは何ですか?そこにある例を試してみてください。それらの例と混同している点がある場合は、それらを明示的に投稿してください。 –
とにかく '色相[(色相<110)| (色相> 140)] = 0'はあなたが探しているものです。編集:実際には、以下の解決策は、あなたが最初のチャンネルに基づいてのみマスキングしていたという事実に注目しています。 –
@AlexanderReynolds OPは、「色相」の最初のチャンネルに沿ってのみインデックスを作成しています。だから、そこには色相[...、0]が必要です。 – Divakar