手勢識別中起首要進行膚色查抄,判定hand在那邊,常用的方式有好幾種,先來介紹比力傳統的OTSU二值方式。
我們知道YUV色彩模子源于RGB模子,亮度和色度分手開,適合于圖像處置。
YCbCr模子來歷于YUV模子,多用于數字視頻。好比H.264(用過FFMPEG的都知道)
YCrCb合用于顯示器
Y指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量
import cv2 as cv
import numpy as np
from random
import random from random
import randint
image = cv.imread('c:\\handtest.jpg', cv.IMREAD_COLOR)
cv.imshow("image", image)
YCrCb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
# 把圖像轉換到YCrCb
cv.imshow("YCrCb", YCrCb)
# 別離獲取Y, Cr, Cb通道圖像
(Y, Cr, Cb) = cv.split(YCrCb)
cv.imshow("Y", Y)
cv.imshow("Cr", Cr)
cv.imshow("Cb", Cb)
# 高斯濾波,
對紅色分量進行高斯濾波 消弭邊緣的影響 采用(5, 5)核
GaussianBlur = cv.GaussianBlur(Cr, (5, 5), 0)
cv.imshow("GaussianBlur", GaussianBlur)
# 用經典的OTSU算法 二值化圖像
ret, threshold = cv.threshold(GaussianBlur, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
cv.imshow("threshold", threshold )
cv.waitKey(0)cv.destroyAllWindows()
小結:
二值化方式檢測是可以實現膚色檢測的,可是不完美有些離散斑塊
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!