web-dev-qa-db-ja.com

python opencvを使用して白色を追跡

私はウェブカメラとpython opencvを使用して白色を追跡したいと思います。私はすでに青色を追跡するコードを持っています。

_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# define range of blue color in HSV
lower_blue = np.array([110,100,100])
upper_blue = np.array([130,255,255])

#How to define this range for white color


# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame,frame, mask= mask)

cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)

何をvalues下限と上限として指定する必要があります白色を追跡する !! ??値を変更してみましたが、他の色が得られましたが、白い色では運がありません!!!

hSV値またはBGR値が下限および上限として指定されているということですか?

PS:さらなる処理のために、最後の結果をバイナリイメージとして取得する必要があります!!

私を助けてください !!!

18
user3429616

私は白い色を追跡するためにこれを書きました:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    _, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of white color in HSV
    # change it according to your need !
    lower_white = np.array([0,0,0], dtype=np.uint8)
    upper_white = np.array([0,0,255], dtype=np.uint8)

    # Threshold the HSV image to get only white colors
    mask = cv2.inRange(hsv, lower_white, upper_white)
    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)

    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

私は私の携帯電話の白い画面を追跡しようとし、これを得ました:

enter image description here

HSV値の変更を試すことができます。また、レガートが言ったように、HSL色空間を試すこともできます。

13
Vipul

HSV色空間を見てみましょう。

enter image description here

白が必要です。これは中央に近く、かなり高い色です。皮切りに

sensitivity = 15
lower_white = np.array([0,0,255-sensitivity])
upper_white = np.array([255,sensitivity,255])

その後、必要に応じてしきい値を調整します。

HSLを使用することを考慮してください色空間は、色相、彩度、明度の略です。次に、白を検出し、他の色を簡単に認識できるようにするために、明るさを調べるだけで済みます。 HSVとHSLの両方は、同様の色を近く保ちます。また、HSLはおそらく白を検出するためにより正確であることを証明するでしょう-ここに理由があります:

enter image description here

33
Legat