找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4518|回复: 0

[代码与实例] python openCV识别人体肤色鉴黄,如何去除背景的影响。

3

主题

6

帖子

6

积分

贫民

积分
6
逐梦白痴 发表于 2018-6-22 00:10:22 | 显示全部楼层 |阅读模式
在实验楼中看到一个鉴黄的实验,自己写了个程序,能对肤色进行识别,但是环境颜色与人体肤色相近时,受影响较大。‘
希望有人能指个明路,说明一下去除背景,或者提取人物特征的算法,(不要用到机器学习,小白一个,不会用)
import cv2

class skin_judge():

        def __init__(self,img):
                        self.img = img
               

        def read_img(self):
                self.Raw_img = cv2.imread(self.img)
                return self.Raw_img
        def skin_judge(self):
                width,length=self.Raw_img.shape[:2]
                print(width,length)
                for i in range (width):
                        for j in  range(length):
                                b,g,r = self.Raw_img[i,j]##读取各个像素点的BGR信息
                                ##将BGR转为YCbCr
                                Y = 0.257*r + 0.564*g + 0.098*b + 16
                                Cb = -0.148*r - 0.291*g + 0.439*b +128        
                                Cr = 0.439*r - 0.368*g -0.071*b + 128
                                if 133<=Cr and Cr<=173 and 77<=Cb and Cb<=127:###黄种人的皮肤颜色范围
                                        self.Raw_img[i,j]=[255,255,255]
                                else:
                                        self.Raw_img[i,j]=[0,0,0]       
                return self.Raw_img        ###返回处理过的图片

Img = skin_judge('skin_judge_2.jpg')
cv2.imshow('Raw.jpg',Img.read_img())
cv2.imshow('judged.jpg',Img.skin_judge())
cv2.waitKey()
cv2.destroyAllWindows()


如图所示,背景颜色与肤色相近时,影响较大

如图所示,背景颜色与肤色相近时,影响较大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表