opencv 眼睛识别 linux,OpenCV-Python 人脸眼睛嘴识别

1 # 识别眼睛、嘴巴、人脸

2 image = cv2.imread('./yong.jpg')

3

4 gray = cv2.cvtcolor(image,code=cv2.color_bgr2bgra)

5 # 加载算法

6 face_detector = cv2.cascadeclassifier('./haarcascade_frontalface_default.xml')

7 eye_detector = cv2.cascadeclassifier('./haarcascade_eye.xml')

8 mouth_detector = cv2.cascadeclassifier('./haarcascade_mcs_mouth.xml')

9

10 face_zone = face_detector.detectmultiscale(gray,1.3,3,minsize=(80,80))

11 print(face_zone)

12 for x,y,w,h in face_zone:

13 cv2.rectangle(image, pt1=(x,y),pt2=(x+w,y+h), color=[0,0,255],thickness=2)

14

15 # 人脸切分

16 h_up = int(face_zone[0,-1]*0.6)

17 x,y,w,h = face_zone.reshape(-1)

18 # 头部

19 head = gray[y:y+h,x:x+w]

20 head_up = head[0:h_up]

21 head_down = head[h_up:]

22 # 检测眼睛

23 eye_zone = eye_detector.detectmultiscale(head_up,1.3,3,minsize=(10,10))

24 for ex,ey,ew,eh in eye_zone:

25 cv2.rectangle(image, pt1=(ex + x,ey+y), pt2=(ex+ew+x,ey+eh+y),color=[0,255,0],thickness=1)

26

27 # 检查嘴

28 mouth_zone = mouth_detector.detectmultiscale(head_down,1.3,3,minsize=(10,10))

29 for mx,my,mw,mh in mouth_zone:

30 cv2.rectangle(image, pt1=(mx + x,my+y+h_up), pt2=(mx+mw+x,my+mh+y+h_up),color=[255,0,0],thickness=1)

31

32

33 cv2.imshow('liyong', image)

34 cv2.waitkey(0)

35 cv2.destroyallwindows()

代码第一行:    导入图片

第二行:      灰度化处理

第六--九行:    读取特征数据,并使用分类器对特征数据进行处理

第十--十三行:   进行人脸识别

第十五--二十一行: 进行人脸切分,在上部分识别眼睛;人脸下部分识别嘴的预处理

第二十三--二十五行:  识别眼睛

第二十八--三十行:  识别嘴

将人脸眼睛替换成自定义眼睛:

只需要将上面的第24到25行修改成

eye = cv2.imread('./eye.jpg')

for ex,ey,ew,eh in eye_zone:

# cv2.rectangle(image, pt1=(ex + x,ey+y), pt2=(ex+ew+x,ey+eh+y),color=[0,255,0],thickness=1)

# 眼睛缩放

eye2 = cv2.resize(eye,dsize=(ew,eh))

# 替换

image[y+ey: y+ey+eh,ex+x:ex+x+ew] = eye2

eye2 = cv2.resize(eye,dsize=(ew,eh))    将读取的图片换成识别出的眼睛大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值