Pycharm open CV learning 7

Eddie Chen
7 min readJun 1, 2021

Color detection

來到最興奮的顏色追蹤了

先輩知識

  1. 修改顏色指令HSV
import cv2

path = 'resources/5.PNG '

img=cv2.imread(path)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)


cv2.imshow("Kevin",img)
cv2.imshow("Kevin hsv",imgHSV)
cv2.waitKey(0)

需要先了解一下如何改變色階

我們先製作拉霸trace bar來設計調整顏色的功能,了解後才能利用顏色追蹤

下面只給拉霸,為定義變數

import cv2
def empty():
pass
path = 'resources/5.PNG '
cv2.namedWindow("Kevin track Bar")
cv2.resizeWindow("Kevin track Bar",640,240)
cv2.createTrackbar("HUG Min","Kevin track Bar",0,179,empty)
#拉霸上下值0~180
img=cv2.imread(path)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)


cv2.imshow("Kevin",img)
cv2.imshow("Kevin hsv",imgHSV)
cv2.waitKey(0)

拉霸程式成功

可調整圖形

import cv2
import numpy as np
def empty(a):
pass
path = 'resources/5.PNG '
cv2.namedWindow("Kevin track Bar")
cv2.resizeWindow("Kevin track Bar",640,240)
cv2.createTrackbar("HUG Min","Kevin track Bar",0,179,empty)
cv2.createTrackbar("HUG Max","Kevin track Bar",179,179,empty)
cv2.createTrackbar("sat Min","Kevin track Bar",0,255,empty)
cv2.createTrackbar("sat Max","Kevin track Bar",255,255,empty)
cv2.createTrackbar("val Min","Kevin track Bar",0,255,empty)
cv2.createTrackbar("val Max","Kevin track Bar",255,255,empty)

while True:
img=cv2.imread(path)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
h_min = cv2.getTrackbarPos("HUG Min","Kevin track Bar")
h_max = cv2.getTrackbarPos("HUG Max","Kevin track Bar")
s_min = cv2.getTrackbarPos("sat Min","Kevin track Bar")
s_max = cv2.getTrackbarPos("sat Max","Kevin track Bar")
v_min = cv2.getTrackbarPos("val Min","Kevin track Bar")
v_max = cv2.getTrackbarPos("val Max","Kevin track Bar")

print(h_min,h_max,s_min,s_max,v_min,v_max)

lower = np.array([h_min,s_min,v_min])
upper = np.array([h_max,s_max,v_max])
mask = cv2.inRange(imgHSV,lower,upper)

cv2.imshow("Kevin",img)
cv2.imshow("Kevin hsv",imgHSV)
cv2.imshow("mask",mask)
cv2.waitKey(1)

跳用調整後的圖片

import cv2
import numpy as np
def empty(a):
pass
path = 'resources/3.PNG '
cv2.namedWindow("Kevin track Bar")
cv2.resizeWindow("Kevin track Bar",640,240)
cv2.createTrackbar("HUG Min","Kevin track Bar",0,179,empty)
cv2.createTrackbar("HUG Max","Kevin track Bar",179,179,empty)
cv2.createTrackbar("sat Min","Kevin track Bar",0,255,empty)
cv2.createTrackbar("sat Max","Kevin track Bar",255,236,empty)
cv2.createTrackbar("val Min","Kevin track Bar",50,255,empty)
cv2.createTrackbar("val Max","Kevin track Bar",255,255,empty)


while True:
img=cv2.imread(path)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
h_min = cv2.getTrackbarPos("HUG Min","Kevin track Bar")
h_max = cv2.getTrackbarPos("HUG Max","Kevin track Bar")
s_min = cv2.getTrackbarPos("sat Min","Kevin track Bar")
s_max = cv2.getTrackbarPos("sat Max","Kevin track Bar")
v_min = cv2.getTrackbarPos("val Min","Kevin track Bar")
v_max = cv2.getTrackbarPos("val Max","Kevin track Bar")

print(h_min,h_max,s_min,s_max,v_min,v_max)

lower = np.array([h_min,s_min,v_min])
upper = np.array([h_max,s_max,v_max])
mask = cv2.inRange(imgHSV,lower,upper)
imgResult = cv2.bitwise_and(img,img,mask=mask)

cv2.imshow("Kevin",img)
cv2.imshow("Kevin hsv",imgHSV)
cv2.imshow("mask",mask)
cv2.imshow("maskresult",imgResult)
cv2.waitKey(1)

--

--