import cv2
import numpy as np
def rgb(img):
# 图像处理
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB)
cv2.imshow("rgb",rgb)
(y, cr, cb) = cv2.split(rgb)
print(cr.shape)
colorInset = np.zeros((cr.shape), dtype=np.uint8) # 表示这是颜色区间
cv2.imshow("inset",colorInset)
# 参数(图像,中心位置,轴线,角度,开始角度,结束角度,颜色,厚度)
cv2.ellipse(colorInset, (113, 155), (23, 15), 43, 0, 360, (255, 255, 255), -1)
# 画了一片黑
skin = np.zeros(cr.shape, dtype=np.uint8)
(x, y) = cr.shape
for i in range(0, x):
for j in range(0, y):
CR = rgb[i, j, 1]
CB = rgb[i, j, 2]
if colorInset[CR, CB] > 0:
skin[i, j] = 255
cv2.imshow('mask', skin)
dst = cv2.bitwise_and(img, img, mask=skin)
v1 = np.hstack((img, dst))
cv2.imshow("all", v1)
def hsv(imgout):
hsv = cv2.cvtColor(imgOut, cv2.COLOR_BGR2HSV)
cv2.imshow("hsv",hsv)
lower = np.array([0,2,130])
upper = np.array([179,200,254])
# 蒙版
mask = cv2.inRange(hsv, lower, upper)
dst = cv2.bitwise_and(imgOut, imgOut, mask=mask)
cv2.imshow("hsvmask", mask)
v1 = np.hstack((imgOut, dst))
cv2.imshow("hsvall", v1)
cv2.waitKey()
def getface(img):
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(imgGray,1.1,4)
width = 300
imgOut = img
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
# ******************************提取人脸部分,并且进行颜色识别,肤色
pts1 = np.float32([[x, y], [x + w, y], [x, y + h], [x + w, y + h]])
height = int(h / w * width)
pts2 = np.float32([[0, 0], [width, 0], [0, height], [width, height]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
imgOut = cv2.warpPerspective(img, matrix, (width, height))
# ******************************提取人脸部分,并且进行颜色识别,肤色
return imgOut
if __name__ == '__main__':
for i in range(1,11):
src = 'people/'+str(i)+'.png'
img = cv2.imread(src)
imgOut = getface(img)
rgb(imgOut)
hsv(imgOut)
while True:
if cv2.waitKey(1) & 0xFF == ord('q'):
break
OpenCV进行人脸提取,RGB以及HSV分别提取+实验报告.zip
版权申诉
5星 · 超过95%的资源 158 浏览量
2021-12-11
20:03:13
上传
评论
收藏 4.59MB ZIP 举报
我慢慢地也过来了
- 粉丝: 5925
- 资源: 3787
最新资源
- 人工智能实验四 感知器算法的设计实现
- java小项目多线程多线程 复制文件 冒泡排序 群聊
- 四数之和(java代码).docx
- 701837906919458TapScanner v3.0.10 (Pro).apk
- 青岛大学人工智能实验二 利用α-β搜索的博弈树算法编写一字棋游戏
- ### 1、项目介绍 本项目Scrapy进行数据爬取,并使用Django框架+PyEcharts实现可视化大屏 效果如下:
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 289ssm-mysql-jsp 计算机课程实验管理系统.zip(可运行源码+数据库文件+文档)
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈