图像处理(2)opencv识别

调用摄像头识别人脸

import matplotlib.pyplot as plt
import cv2

face_detector=cv2.CascadeClassifier('./opencv/haarcascade_frontalface_alt.xml')
#调用人脸识别算法
cap=cv2.VideoCapture(0)#打开摄像头
flag,frame=cap.read()#打开摄像头,读取摄像内容
if not flag:
    print('she xiang tou diao yong shibai')
    
lss_data=cv2.imread('lss.jpg')
lss_data=lss_data[50:750,0:650]#获得头像内容

while flag:
    face_zone=face_detector.detectMultiScale(frame,scaleFactor=1.1,minNeighbors=12)
    #找到区域,第一个参数摄像头展现图像的区域,第二个识别区域大小,第三个锻炼次数
    
    for x,y,w,h in face_zone:#把相关的内容拿出来
        cv2.rectangle(frame,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2)#选中
        #画框框,pt1,pt2框的坐标参数
        lss_head=cv2.resize(lss_data,dsize=(w,h))
        flag,frame=cap.read()
        frame[y:y+h,x:x+w]=lss_head
        
    cv2.imshow('capture',frame)#展示
    if cv2.waitKey(1000//24)== ord('q'):#ord('q')-->q的ASCII值
        break
    flag,frame = cap.read()
   

cv2.waitKey(0)#等到任意一个值
cv2.destroyAllWindows()#把所有窗口都销毁
        

输出:

启动摄像头

2.识别视频中的人脸

import matplotlib.pyplot as plt
import cv2
import numpy as np

face_detector=cv2.CascadeClassifier('opencv/haarcascade_frontalface_alt.xml')

cap=cv2.VideoCapture('rl.mp4')#打开视频
fourcc=cv2.VideoWriter_fourcc('M','P','4','2')#设置视频中的编码
fps=cap.get(cv2.CAP_PROP_FPS)#获取视频中的帧率内容
w=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频空间宽度
h=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频空间高度

lss_data=cv2.imread('lss.jpg')
lss_data=lss_data[50:750,0:650]#获得头像内容



video_writer=cv2.VideoWriter(filename = './rl.avi',fourcc=fourcc,fps=fps,frameSize=(w,h))
#重写新视频
flag,frame=cap.read()#读取视频中的一帧内容

while flag:#如果读的一帧有内容
    face_zone=face_detector.detectMultiScale(frame,scaleFactor=1.1,minNeighbors=12)
    #读取的区域
    
    for x,y,w,h in face_zone:#获取视频区域的坐标值
        #cv2.rectangle(frame,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255])
        #将一帧画框框
        lss_head=cv2.resize(lss_data,dsize=(w,h))
        frame[y:y+h,x:x+w]=lss_head
    cv2.imshow('rl',frame)#将一帧展示成图片
    video_writer.write(frame)#保存新的视频
    
    lag,frame=cap.read()#读取下一帧视频
    if cv2.waitKey(1)==ord('q'):
        break
cv2.destroyAllWindows()#把所有窗口都销毁
cap.release()
video_writer.release()

上一篇:Spark大数据分析实战-公司销售数据分析


下一篇:GUI编程(狂神学习笔记)