当前位置: 首页 > news >正文

Python | 人脸识别系统 — 背景模糊

本博客为人脸识别系统的背景模糊代码解释

人脸识别系统博客汇总:人脸识别系统-博客索引

项目GitHub地址:Su-Face-Recognition: A face recognition for user logining

注意:阅读本博客前请先参考以下博客

工具安装、环境配置:人脸识别系统-简介

UI界面设计:人脸识别系统-UI界面设计

UI事件处理:人脸识别系统-UI事件处理

摄像头展示画面:人脸识别系统-摄像头画面展示

阅读完本博客后可以继续阅读:

用户端逻辑:

  • 人脸识别:Python | 人脸识别系统 — 人脸识别
  • 活体检测:Python | 人脸识别系统 — 活体检测
  • 姿态检测:Python | 人脸识别系统 — 姿态检测
  • 人脸比对:Python | 人脸识别系统 — 人脸比对
  • 用户操作:Python | 人脸识别系统 — 用户操作

管理员端逻辑:

  • 管理员操作:
  • 用户操作:

一、判断器

        首先判断是否打开摄像头,打开则判断 self.isFineSegmentation_flag 是否打开背景模糊。若否,则调用fine_segmentation方法,进行背景模糊。

# 主界面
class UserMainWindow(QMainWindow, UserMainUi):def __init__(self, parent=None):super(UserMainWindow, self).__init__(parent)self.setupUi(self)self.show_image = Noneself.cap = cv2.VideoCapture()  # 相机self.source = CAPTURE_SOURCE  # 相机标号self.WIN_WIDTH = 800  # 相机展示画面宽度self.WIN_HEIGHT = 500  # 相机展示画面高度self.isFineSegmentation_flag = False  # 是否打开背景模糊标志... ...# 背景模糊判别器def fine_segmentation_judge(self):if not self.cap.isOpened():QMessageBox.information(self, "提示", self.tr("请先打开摄像头"))else:if not self.isFineSegmentation_flag:self.isFineSegmentation_flag = Trueself.fine_segmentation_button.setText("关闭背景模糊")self.fine_segmentation()self.fine_segmentation_button.setText("背景模糊")self.isFineSegmentation_flag = Falseelif self.isFineSegmentation_flag:self.isFineSegmentation_flag = Falseself.fine_segmentation_button.setText("背景模糊")self.show_camera()

二、背景模糊

    # 背景模糊def fine_segmentation(self):mp_selfie_segmentation = mp.solutions.selfie_segmentationBG_COLOR = (192, 192, 192)with mp_selfie_segmentation.SelfieSegmentation(model_selection=1) as selfie_segmentation:while self.cap.isOpened():ret, frame = self.cap.read()QApplication.processEvents()# 将 BGR 图像转换为 RGBin_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# 若要提高性能,可以选择将图像标记为不可写以通过引用传递。in_frame.flags.writeable = Falseresults = selfie_segmentation.process(in_frame)in_frame.flags.writeable = Truein_frame = cv2.cvtColor(in_frame, cv2.COLOR_RGB2BGR)# 在背景图像上绘制分割condition = np.stack((results.segmentation_mask,) * 3, axis=-1) > 0.1# 背景设置为高斯模糊gauss_image = cv2.GaussianBlur(in_frame, (85, 85), 0)if gauss_image is None:gauss_image = np.zeros(in_frame.shape, dtype=np.uint8)gauss_image[:] = BG_COLORout_frame = np.where(condition, in_frame, gauss_image)show_video = cv2.cvtColor(cv2.resize(out_frame, (self.WIN_WIDTH, self.WIN_HEIGHT)), cv2.COLOR_BGR2RGB)self.show_image = QImage(show_video.data, show_video.shape[1], show_video.shape[0],QImage.Format_RGB888)self.camera_label.setPixmap(QPixmap.fromImage(self.show_image))

阅读完本博客后可以继续阅读:

用户端逻辑:

  • 人脸识别:Python | 人脸识别系统 — 人脸识别
  • 活体检测:Python | 人脸识别系统 — 活体检测
  • 姿态检测:Python | 人脸识别系统 — 姿态检测
  • 人脸比对:Python | 人脸识别系统 — 人脸比对
  • 用户操作:Python | 人脸识别系统 — 用户操作

管理员端逻辑:

  • 管理员操作:
  • 用户操作:

 注:以上代码仅为参考,若需要运行,请参考项目GitHub完整源代码:Su-Face-Recognition: A face recognition for user logining

http://www.lryc.cn/news/64706.html

相关文章:

  • YOLOv5+单目测量物体尺寸(python)
  • C++异常
  • Java中的字符串是如何处理的?
  • 【热门框架】怎样使用Mybatis-Plus制作标准的分页功能
  • Java方法引用:提高代码可读性和可维护性
  • 如何使用CSS和JS实现一个响应式的滚动时间轴
  • Feign组件的使用及开发中使用方式
  • html css 面试题
  • LeetCode_双指针_中等_24.两两交换链表中的节点
  • 【openGauss实战11】性能报告WDR深度解读
  • Vue3实现打字机效果
  • maven无法依赖spring-cloud-stater-zipkin如何解决?
  • 实战踩坑---MFC---CreateEvent
  • JavaWeb学习------jQuery
  • 米哈游测开岗 【一面总结】
  • 微服务 Spring Boot 整合Redis 实现优惠卷秒杀 一人一单
  • 构建OVS网络
  • 【Python】万能之王 Lambda 函数详解
  • 手把手教你怎么搭建自己的AI数字人直播间?帮你24小时不间断直播卖货
  • MySQL性能监控全掌握,快来get关键指标及采集方法!
  • sed进阶之保留空间和排除命令
  • 21安徽练习
  • 【VAR | 时间序列】应用VAR模型时的15个注意点
  • 校招在线测评题目汇总
  • 『python爬虫』05. requests模块入门(保姆级图文)
  • WPF超好用的框架Prism入门使用,上位机赶紧学起来!
  • 十个机器学习应用实例
  • 【Redis17】Redis进阶:管道
  • Django项目页面样式如何“传给”客户端浏览器
  • python 进程间通信 Queue()、Pipe()、manager.list()、manager.dict()、manager.Queue()