Python基于opencv的人脸识别+马赛克处理

news/2024/9/19 2:57:56
 1 import cv2
 2 
 3 camera = cv2.VideoCapture(0)
 4 
 5 frame_width = int(camera.get(3))
 6 frame_height = int(camera.get(4))
 7 
 8 #  训练好的模型
 9 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
10 
11 #  处理视频文件
12 fourcc = cv2.VideoWriter_fourcc(*'mp4v')   # 编解码器
13 out = cv2.VideoWriter('test.mp4', fourcc, 30.0, (frame_width, frame_height))  # 保存位置 编解码器 帧数 分辨率
14 
15 while camera.isOpened():
16     ret, frame = camera.read()
17     frame = cv2.flip(frame, 1)  # 参数:0垂直镜像 1水平镜像
18     #  图像处理
19     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  #  灰度图像
20     faces = face_cascade.detectMultiScale(gray, 1.1, 5)
21     if ret:
22         for (x, y, w, h) in faces:
23             cv2.rectangle(frame, (x,  y), (x + w, y + h), (0, 255, 0), 2)  #  人脸旁边的框
24             cv2.putText(frame, "Unknown", (x + 5, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 1)  #  框旁边的标签
25             #  对人脸进行马赛克处理
26             face_img = frame[y:y + h, x:x + w]
27             face_img = cv2.resize(face_img, (w//30, h//30))  #  缩小人脸区域
28             face_img = cv2.resize(face_img, (w, h), interpolation=cv2.INTER_NEAREST)  #  恢复人脸区域
29             #  处理后的图像放回源中
30             frame[y:y+h, x:x+w] = face_img
31         out.write(frame)
32         cv2.imshow("Test", frame)
33         #  按Q停止程序
34         if cv2.waitKey(1) & 0xFF == ord('q'):
35             break
36     else:
37         break
38 
39 #  释放对象
40 out.release()
41 camera.release()
42 cv2.destroyAllWindows()

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

音乐会

草坪猫狗排排坐 当音乐响起 七里香从九月香到了九月

Angular 18+ 高级教程 – 国际化 Internationalization i18n

介绍 先讲讲名词。 Internationalization 的缩写是 i18n,中文叫国际化。 Globalization 是 Internationalization 的同义词,都是指国际化。 Localization 的缩写是 l10n,中文叫本地化。 i18n vs l10n 一个国际化,一个本地化,它俩有什么区别,又有什么关系呢? 我们来看一个…

[CTFshow] 文件上传 151-170

web151 提示:前台校验不可靠直接上传1.php提示图片不符合,并且页面无刷新,再根据提示,应该是js验证的,在F12发现了上传验证 layui.use(upload, function(){var upload = layui.upload;//执行实例var uploadInst = upload.render({elem: #upload //绑定元素,url: /upload/ …

Finalshell 连接本地虚拟机上的 ManjaroLinux

1,虚拟机端 (1)查看ip ifconfig(注:使用 ifconfig 报错:提示命令找不到,要先安装网络工具,执行如下命令即可) sudo pacman -S net-tools 然后在使用 ifconfig 命令查看IP 可以在图标黄色位置处获得服务器主机IP:这里查看到的 ip 地址可能会变,下次连接时,可以再次重…

基于Tauri2+Vue3搭建桌面端程序|tauri2+vite5多窗口|消息提醒|托盘闪烁

基于tauri2+vite5+vue3封装多窗口实践|自定义消息提醒|托盘右键菜单及图标闪烁 这段时间一直在捣鼓最新版Tauri2.x整合Vite5搭建桌面端多开窗体应用实践。tauri2.0相较于1.0版本api有了比较多的更改,而且tauri2支持创建android/ios应用。至于具体的api变更,大家可以去官网查阅…

[CTFshow] 命令执行 29-77,118-124

web29 简单过滤 error_reporting(0); if(isset($_GET[c])){$c = $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__); }?c=system(tac fla*); web30 error_reporting(0); if(isset($_GET[c])){$c = $_GET[c];if(!preg_match("…

ComfyUI 基础教程(五) —— 应用 IP-Adapter 实现图像风格迁移

来吧,理解 IP-Adapter。中秋假期,又可以玩玩 AI 了。前面介绍了 ComfyUI 的 Lora 模型以及 ControlNet,本文介绍另一个非常重要且使用的节点,IP-Adapter。 一、 IP-Adapter 概念 1.1 IPAdapter 的介绍 IP-Adapter 的是腾讯 ailab 实验室发布的一个 Stable Diffusion 的适配…

创建一个虚拟机

需要一个iso文件(镜像)