Python視覺處理(四)HSV處理

很多時候,當圖像中存在色彩時,我們用用RGB圖像處理得不到想要的結果時,就可以把圖像轉化成HSV圖像,再加以處理,這樣處理起來獲取方便了很多。當然,在特定的環境中,我們不知道HSV的範圍,這個時候可以測試一下圖像中想要凸顯的物體的HSV的範圍,再設定相應的閾值範圍。

點擊圖像觀察圖像HSV值代碼:

import cv2
import numpy as np
from matplotlib import pyplot as plt
image=cv2.imread('./src/q5.png')
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
def getpos(event,x,y,flags,param):
    if event==cv2.EVENT_LBUTTONDOWN:
        print(HSV[y,x])
#th2=cv2.adaptiveThreshold(imagegray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
cv2.imshow("imageHSV",HSV)
cv2.imshow('image',image)
cv2.setMouseCallback("imageHSV",getpos)
cv2.waitKey(0)
#print (image(10,10,10))

圖像及輸出的HSV值:

H:圖像的色彩/色度;S:圖像的飽和度;V:圖像的亮度


當我們確定了圖像的HSV範圍時,就可以利用HSV對採集的視頻做一個hsv處理:

代碼:

import cv2
import numpy as np
cap=cv2.VideoCapture(1)
#image=cv2.imread("./src/7.png")
while(1):
    ret,image=cap.read()
    hsv=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)

    lower=np.array([100,60,100])
    upper=np.array([120,120,180])

    mask=cv2.inRange(hsv,lower,upper)
    res=cv2.bitwise_and(image,image,mask=mask)
    cv2.imshow('image',image)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    #cv2.waitKey(0)
    k=cv2.waitKey(5)&0xff
    if k==27:
        break
cv2.destroyAllWindows()


這是對藍色物體的hsv處理:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章