OpenCv之视频人脸识别


一、人脸检测

案例代码如下:

import cv2
import numpy as npvideo =  cv2.VideoCapture('1.mp4')
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
while True:retval,image = video.read() #     retval boolean类型表名是否获得了图片if not retval:print('视频读取完成,没有图片')breakfaces = face_detector.detectMultiScale(image)for x,y,w,h in faces:cv2.rectangle(image,pt1=(x,y),pt2 = (x+w,y+h),color=[0,0,255],thickness=2)cv2.imshow('video',image)key = cv2.waitKey(1)if key == ord('q'):breakcv2.waitKey(1)
video.release()

二、马赛克处理

视频帧率、宽度、高度、图片个数计算:

import cv2
import numpy as npvideo =  cv2.VideoCapture('1.mp4')
# 获得视频中的属性
fps = video.get(propId=cv2.CAP_PROP_FPS) #得到帧率
width = video.get(propId=cv2.CAP_PROP_FRAME_WIDTH) #宽度
height = video.get(propId=cv2.CAP_PROP_XI_HEIGHT) #高度
count = video.get(propId=cv2.CAP_PROP_FRAME_COUNT) #多少图片
print('--视频帧率',fps)
print(width,height,count)
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
while True:retval,image = video.read() #     retval boolean类型表名是否获得了图片if not retval:print('视频读取完成,没有图片')breakfaces = face_detector.detectMultiScale(image)for x,y,w,h in faces:# cv2.rectangle(image,pt1=(x,y),pt2 = (x+w,y+h),color=[0,0,255],thickness=2)face = image[y:y+h,x:x+w]face = face[::10,::10]face = np.repeat(face,10,axis=0)face = np.repeat(face,10,axis =1)image[y:y+h,x:x+w] = face[:h,:w]cv2.imshow('video',image)key = cv2.waitKey(1)if key == ord('q'):breakcv2.waitKey(1)
video.release()

三、写视频

案例代码如下:

import cv2
import numpy as npvideo =  cv2.VideoCapture('1.mp4')
wr = cv2.VideoWriter(filename = 'gray.mp4',fourcc = cv2.VideoWriter.fourcc(*'MP4'),fps = 24, #视频帧率framesize = (640,360)) #图片尺寸
# 获得视频中的属性
fps = video.get(propId=cv2.CAP_PROP_FPS) #得到帧率
width = video.get(propId=cv2.CAP_PROP_FRAME_WIDTH) #宽度
height = video.get(propId=cv2.CAP_PROP_XI_HEIGHT) #高度
count = video.get(propId=cv2.CAP_PROP_FRAME_COUNT) #多少图片
print('--视频帧率',fps)
print(width,height,count)
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
while True:retval,image = video.read() #     retval boolean类型表名是否获得了图片if not retval:print('视频读取完成,没有图片')breakimage = cv2.resize(image,(640,360))gray = cv2.cvtColor(image,code = cv2.COLOR_BGR2GRAY)np.repeat(gray.reshape(360,640,1),3,axis=2) #蓝绿红变为三维,但值是一样的# wr.write(gray)faces = face_detector.detectMultiScale(image)for x,y,w,h in faces:# cv2.rectangle(image,pt1=(x,y),pt2 = (x+w,y+h),color=[0,0,255],thickness=2)face = image[y:y+h,x:x+w]face = face[::10,::10]face = np.repeat(face,10,axis=0)face = np.repeat(face,10,axis =1)image[y:y+h,x:x+w] = face[:h,:w]wr.write(image) #彩色图片是三维的,而黑白图片是二维的cv2.imshow('video',image)key = cv2.waitKey(1)if key == ord('q'):breakcv2.waitKey(1)
video.release()
wr.release()

四、摄像头识别人脸

案例代码如下:

import cv2
import numpy as np# 打开本机摄像头
cap = cv2.VideoCapture(0)
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')while True:flag,frame = cap.read() #flag是否读取了图片if not flag:break# 转为灰度图片gray = cv2.cvtColor(frame,code = cv2.COLOR_BGR2GRAY)faces = face_detector.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=10)for x,y,w,h in faces:cv2.rectangle(frame,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2)cv2.imshow('face',frame)key = cv2.waitKey(1000//24)if key == ord('q'):breakcv2.destroyAllWindows()
cap.release()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GD32F103】自定义程序库05-开源库CJSON使用记录

json处理 函数库CJson cJSON.h /*Copyright (c) 2009-2017 Dave Gamble and cJSON contributorsPermission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deali…

APP测试学习之Android模拟器Genymotion安装配置不上解决方法以及adb基本使用

Android模拟器Genymotion安装配置不上解决方法以及adb基本使用 Genymotion下载安装配置遇见的问题解决方法adb基本使用 Genymotion下载 1.首先进入官网 https://www.genymotion.com/ 2.在官网注册一个账号 https://www-v1.genymotion.com/account/login/ 3.下载 https://www.g…

计算机网络——应用层

这篇文章是计算机网络系列文章的第五篇 计算机网络——物理层 计算机网络——数据链路层 计算机网络——网络层 计算机网络——传输层 计算机网络——应用层 序言 计算机网络中的应用层在当今的社会起到了什么作用? 应用层在当今社会有着必不可缺的作用。是协议栈中…

mysql-docker镜像安装

要使用 Docker 镜像安装 MySQL 5.7,可以按照以下步骤进行操作: 1. 确保已经安装了 Docker。如果没有安装,请先安装 Docker。 2. 打开终端或命令行窗口,运行以下命令来拉取 MySQL 5.7 的 Docker 镜像: docker pull my…

Function优化大量的if else(案例一)

Function(Function<T, R> )可以看作转换型函数&#xff0c;有一个输入型参数T和返回型参数R。 package com;import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.function.Function;public class Function1Test {private stati…

8.4 利用集成运放实现的信号转换电路

在控制、遥控、遥测、近代生物物理和医学等领域&#xff0c;常常需要将模拟信号进行转换&#xff0c;如将信号电压转换成电流&#xff0c;将信号电流转换成电压&#xff0c;将直流信号转换成交流信号&#xff0c;将模拟信号转换成数字信号&#xff0c;等等。 一、电压 - 电流转…

Spring 能解决所有循环依赖吗?

以下内容基于 Spring6.0.4。 看了上篇文章的小伙伴&#xff0c;对于 Spring 解决循环依赖的思路应该有一个大致了解了&#xff0c;今天我们再来看一看&#xff0c;按照上篇文章介绍的思路&#xff0c;有哪些循环依赖 Spring 处理不了。 严格来说&#xff0c;其实也不是解决不了…

在自定义数据集上微调Alpaca和LLaMA

本文将介绍使用LoRa在本地机器上微调Alpaca和LLaMA&#xff0c;我们将介绍在特定数据集上对Alpaca LoRa进行微调的整个过程&#xff0c;本文将涵盖数据处理、模型训练和使用流行的自然语言处理库(如Transformers和hugs Face)进行评估。此外还将介绍如何使用grado应用程序部署和…

Nginx配置TCP代理指南

使用Nginx作为TCP代理是一种有效的方式&#xff0c;可以实现高性能的负载均衡和反向代理。本篇指南将介绍如何配置Nginx以用作TCP代理。 步骤1&#xff1a;安装Nginx 首先&#xff0c;确保您的系统已经安装了Nginx。您可以从Nginx官方网站或适用于您的操作系统的软件包管理器…

论文笔记--ERNIE: Enhanced Language Representation with Informative Entities

论文笔记--ERNIE: Enhanced Language Representation with Informative Entities 1. 文章简介2. 文章概括3 文章重点技术3.1 模型框架3.2 K-Encoder(Knowledgeable Encoder)3.3 预训练任务3.4 微调 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题&#xff1a;ERNIE:…

Flask配置远程访问

Flask的app.run()默认只提供localhost:5000的访问。 此时用http://127.0.0.1:5000 可以正常访问项目&#xff0c;但是用http://服务器IP:5000来访问会失败&#xff0c;用telnet来连接服务器的5000端口也会失败。 解决方案&#xff1a; 如果想在远程访问服务器的Flask项目&am…

NLP“正则匹配分词“什么意思

今天在看NLP代码的时候&#xff0c;有一段代码没有看懂&#xff1a; def _regex_match(self, smiles):tokenized []for smi in smiles:tokens self.prog.findall(smi)tokenized.append(tokens)return tokenized tokens self._regex_match(sents1) 通过正则匹配对第一个句子…

从0到1完成UI自动化测试框架搭建之Pytest

上篇文章中&#xff0c;我们学会了如何使用UI Automator2atx编写简单的Android自动化脚本。 但是有个问题&#xff0c;大家可以思考下&#xff0c;光用自动化脚本让它自己动起来&#xff0c;是不是缺了点什么&#xff1f; 我们写测试用例的时候&#xff0c;是不是经常写&…

C语言第七课----------函数的定义及使用--------C语言重要一笔

作者前言 个人主页::小小页面 gitee页面:秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 __________________________________________________________ 目录 1.函数是什么 2. 库函数 3. 自定义函数 4. 函数参数 5. 函数调用 6. 函数的嵌套调用和链式访问 7. 函数的声…

两天学会用Webpack打包前端代码-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 什么是 Webpack&#xff1f; 使用 Webpack 体验webpack打包过程 修改 Webpack 打包入口和出口 入口 出…

一些抄袭CSDN的爬虫网站(长期收集更新)

目录 一、CodeAntenna1. 简介2. 网址 二、待更新。。。 本文由CSDN点云侠原创&#xff0c;爬虫网站请努力加油爬。 一、CodeAntenna 1. 简介 互联网耻辱柱排行榜Top 1。本人博客里任何一点免费可读的部分都被该网站爬得体无完肤。 2. 网址 https://codeantenna.com/a/B4cMB…

MQTT 与 Kafka|物联网消息与流数据集成实践

MQTT 如何与 Kafka 一起使用&#xff1f; MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;专为受限网络环境下的设备通信而设计。Apache Kafka 是一个分布式流处理平台&#xff0c;旨在处理大规模的实时数据流。 Kafka 和 MQTT 是实现物…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

json-server Node.js 服务,前端模拟后端提供json接口服务

json-server Node.js 服务,前端模拟后端提供json接口服务 背景&#xff1a; 前后端分离的项目&#xff0c;如果前端写页面的话&#xff0c;必须的后端提供接口文件&#xff0c;作为前端等待时间太久&#xff0c;不便于开发进行&#xff0c;如果前端写的过程中自己搭建一个简要的…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer&#xff08;Qt 设计师&#xff09;使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…