手势识别中起首要进行肤色查抄,判定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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!