Я пытался одновременно определить несколько цветов в видео, поэтому я создал код, включающий трекбар, для настройки значений hsv
. Вот код:
import numpy as np
import cv2
def nothing(x):
pass
cap = cv2.VideoCapture(0)
cv2.namedWindow('image')
cv2.createTrackbar('lh','image',0,180,nothing)
cv2.createTrackbar('ls','image',0,255,nothing)
cv2.createTrackbar('lv','image',0,255,nothing)
cv2.createTrackbar('hh','image',0,180,nothing)
cv2.createTrackbar('hs','image',0,255,nothing)
cv2.createTrackbar('hv','image',0,255,nothing)
while(True):
ret, img = cap.read()
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lh = cv2.getTrackbarPos('lh','image')
ls = cv2.getTrackbarPos('ls','image')
lv = cv2.getTrackbarPos('lv','image')
hh = cv2.getTrackbarPos('hh','image')
hs = cv2.getTrackbarPos('hs','image')
hv = cv2.getTrackbarPos('lv','image')
lr = np.array([lh,ls,lv])
hr = np.array([hh,hs,hv])
mask = cv2.inRange(hsv,lr,hr)
res = cv2.bitwise_and(img,img,mask = mask)
cv2.imshow('image',res)
if(cv2.waitKey(1)&0xFF==ord(' ')):
break
cap.release()
cv2.destroyAllWindows()
Проблема, с которой я здесь столкнулся, заключается в том, что при запуске этой программы все, что я вижу, это черный экран. Несмотря на то, что я переместил трекбары, он все еще показывал черный экран. Но когда я попытался запустить эту программу, удалив трекбары для более высокого диапазона, указав диапазон в самом коде для определенного цвета, с которым он работал.
Например, я изменил код:
hr = np.array([120,255,255])
mask = cv2.inRange(hsv,lr,hr)
Как я могу заставить этот код работать для всех цветов?