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

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

   本次要学视频检测,我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客

    我们先把上文中代码复制出来,保留红框的部分。

 然后我们来看一下源代码:

import cv2 as cvdef face_detect_demo(img):gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY)face_detect = cv.CascadeClassifier('M:/python/pythoninstall/Lib/site-packages/cv2/data/haarcascade_frontalface_alt.xml')face = face_detect.detectMultiScale(gary)for x,y,w,h in face:cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)cv.imshow('result',img)#读取摄像头
cap = cv.VideoCapture(0)
#循环
while True:flag,frame = cap.read()if not flag:breakface_detect_demo(frame)if ord('q') == cv.waitKey(1):breakcv.destroyAllWindows()#释放摄像头
cap.release()

依次进行解读:

(1)cv.VideoCapture()

      可以接受一个参数,用于指定视频源:

  • 整数类型:表示摄像头设备的编号,从 0 开始。例如,cv.VideoCapture(0) 表示打开默认的摄像头。
  • 字符串类型:表示本地视频文件的路径或网络视频流的 URL。例如,cv.VideoCapture('video.mp4') 表示打开名为 video.mp4 的本地视频文件。
#举例:
#(1)导入视频路径
cap = cv.VideoCapture('http://example.com/stream.m3u8')
cap = cv.VideoCapture('path/to/your/video.mp4')
#(2)导入摄像头
cv.VideoCapture(0)

 (2)flag,frame=cap.read()

   从指定的视频源(可以是摄像头、本地视频文件或者网络视频流)中读取一帧图像

         每次调用时它会尝试从视频源中获取当前的视频帧,并将其作为一个图像对象返回。

该方法返回两个值,通过元组解包的方式分别赋值给 flagframe

flag:一个布尔类型的值,用于指示是否成功读取到视频帧

           如果成功读取到帧,flag 的值为 True

           如果失败(例如视频结束、视频源断开连接等情况),flag 的值为 False

frame:一个 NumPy 数组,表示读取到的视频帧图像。

            该数组的形状通常为 (高度, 宽度, 通道数),通道数一般为 3(代表 RGB 三个颜色通道),图像的像素值范围通常是 0 到 255。

补充:在这里我们会发现flag,frame两个值不是写在括号里的,反而是在=之前的。这和我们之前熟悉的cv.cvtColor(img,cv.COLOR_BGR2GRAY)这样括号里的写法有什么区别呢?

括号里的值=x,例如数学里见过的sin(x)。

    所以 cv.cvtColor(img,cv.COLOR_BGR2GRAY)中我们可理解为:    x1=img,x2=cv.COLOR_BGR2GRAY

等于号左边的值=y,例如数学里见过的y=sin(x)

 所以flag,frame=cap.read()我们可理解为:

y1=flag,y2=frame

(3)解读循环代码

#本次视频识别代码
while True:flag,frame = cap.read()if not flag:breakface_detect_demo(frame)if ord('q') == cv.waitKey(1):break#对比:之前图像识别代码
while True:if ord('q') == cv.waitKey(0):break

     对比之后可以看到增加的代码主要是关于flag和frame的,其中flag:读帧与否,frame:帧。这一段代码其实执行了两个循环命令,即下图中的蓝框和红框。

     由此可以看到两个循环:

    1.持续读帧

    2.对帧检测人脸

    在这段循环中还有两个调用,如下图:

   1.调用摄像头

   2.调用人脸识别参数

    综上我们可以对整个代码有了整体的结构掌握:

 让我们打开屏幕摄像头试试~

 可以看到已经可以识别屏幕中手机中的人脸照片了,并且随着移动可以动态识别。

   接着我们尝试导入一段视频试一下~

首先获取一段视频,然后保存到py的workspace

将路径输入代码,运行即可。

 可以看到成功识别了节目中的人物~可以点击视频进行观看~

人脸识别测试

(4)总结:

cv.VideoCapture()视频路径

flag,frame=cap.read()读取视频,flag:读帧与否,frame:帧

相关文章:

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

本次要学视频检测,我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来,保留红框的部分。 ​ 然后我们来看一下源代码: import cv2 as cvdef face_detect_demo(…...

自定义基座实时采集uniapp日志

自定义基座实时采集uniapp日志 打测试包给远端现场(测试/客户)实际测试时也能实时看到日志了,也有代码行数显示。 流程设计 #mermaid-svg-1I5W9r1DU4xUsaTF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…...

【java】方法:遍历/求最大值/判断是否存在

1.遍历 public class ArrayTraversal {// 定义一个静态方法用于遍历数组并在一行上显示元素public static void printArray(int[] arr) {for (int num:arr) {// 打印数组元素,不换行System.out.print(num" ");}// 遍历结束后换行System.out.println();}p…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第六节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析(ReadDataByIdentifier0x22服务) 作者:车端域控测试工程师 发布日期:2025年2月13日 关键词:UDS诊断协议、0x22服务、ReadDataByIdentifier、DID读取、ECU测试 一、服务功能…...

dedecms 开放重定向漏洞(附脚本)(CVE-2024-57241)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

AI知识库 - Cherry Studio

1 引言: 最近 DeepSeek 很火啊,想必大家都知道,DeepSeek 这个开源的模型出来后,因其高质量能力和R1 的思维链引发了大家本地部署的热潮。我也不例外,本地部署了一个 14B 的模型,然后把,感觉傻傻…...

20250213 隨筆 雪花算法

雪花算法(Snowflake Algorithm) 雪花算法(Snowflake) 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法,它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID,且不依賴資料庫,具…...

(前端基础)HTML(一)

前提 W3C:World Wide Web Consortium(万维网联盟) Web技术领域最权威和具有影响力的国际中立性技术标准机构 其中标准包括:机构化标准语言(HTML、XML) 表现标准语言(CSS) 行为标准&#xf…...

pdf.js默认显示侧边栏和默认手形工具

文章目录 默认显示侧边栏(切换侧栏)默认手形工具(手型工具) 大部分的都是在viewer.mjs中的const defaultOptions 变量设置默认值,可以使用数字也可以使用他们对应的变量枚举值 默认显示侧边栏(切换侧栏) 在viewer.mjs中找到defaultOptions,大概在732行,或则搜索sidebarViewOn…...

学习总结三十三

括号序列 如果它是一个右括号,考察它与它左侧离它最近的未匹配的的左括号。如果该括号与之对应(即小括号匹配小括号,中括号匹配中括号),则将二者配对。简单理解,找到一个右括号,向左找一个左括号…...

微信小程序 - 组件

组件通信事件 父传子 父组件如果需要向子组件传递指定属性的数据,在 WXML 中需要使用数据绑定的方式 与普通的 WXML 模板类似,使用数据绑定,这样就可以向子组件的属性传递动态数据。 父组件如果需要向子组件传递数据,只需要两…...

如何在Ubuntu中切换多个PHP版本

在Ubuntu环境下实现PHP版本的灵活切换,是众多开发者与系统管理员的重要技能之一。下面,我们将深入探讨如何在Ubuntu系统中安装、配置及管理多个PHP版本,确保您的开发环境随心所欲地适应各类项目需求。 开始前的准备 确保您的Ubuntu系统保持…...

解决DeepSeek服务器繁忙问题

目录 解决DeepSeek服务器繁忙问题 一、用户端即时优化方案 二、高级技术方案 三、替代方案与平替工具(最推荐简单好用) 四、系统层建议与官方动态 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理与工具选择 二、…...

Huatuo热更新--安装HybridCLR

1.自行安装unity编辑器 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x 中任一版本。推荐安装2019.4.40、2020.3.26、2021.3.x、2022.3.x版本。 根据你打包的目标平台,安装过程中选择必要模块。如果打包Android或iOS,直接选择相应模块即可。如果你想打包…...

flink cdc2.2.1同步postgresql表

目录 简要说明前置条件maven依赖样例代码 简要说明 在flink1.14.4 和 flink cdc2.2.1下,采用flink sql方式,postgresql同步表数据,本文采用的是上传jar包,利用flink REST api的方式进行sql执行。 前置条件 1.开启logical 确保你…...

Golang协程调度模型MPG

深入解析Golang协程调度模型MPG:原理、实践与性能优化 一、为什么需要MPG模型? 在传统操作系统调度中,线程作为CPU调度的基本单位存在两个根本性挑战:1)内核线程上下文切换成本高昂(约1-5μs)…...

纪念日倒数日项目的实现-【纪念时刻-时光集】

纪念日/倒数日项目的实现## 一个练手的小项目,uniappnodemysql七牛云。 在如今快节奏的生活里,大家都忙忙碌碌,那些具有特殊意义的日子一不小心就容易被遗忘。今天,想给各位分享一个“纪念日”项目。 【纪念时刻-时光集】 一…...

WPF的MVVMLight框架

在NuGet中引入该库&#xff1a; MVVMLight框架中的命令模式的使用&#xff1a; <StackPanel><TextBox Text"{Binding Name}"/><TextBox Text"{Binding Title}"/><Button Content"点我" Command"{Binding ShowCommand…...

DeepSeek从入门到精通(清华大学)

​ DeepSeek是一款融合自然语言处理与深度学习技术的全能型AI助手&#xff0c;具备知识问答、数据分析、编程辅助、创意生成等多项核心能力。作为多模态智能系统&#xff0c;它不仅支持文本交互&#xff0c;还可处理文件、图像、代码等多种格式输入&#xff0c;其知识库更新至2…...

【DeepSeek】DeepSeek R1 本地windows部署(Ollama+Docker+OpenWebUI)

1、背景&#xff1a; 2025年1月&#xff0c;DeepSeek 正式发布 DeepSeek-R1 推理大模型。DeepSeek-R1 因其成本价格低廉&#xff0c;性能卓越&#xff0c;在 AI 行业引起了广泛关注。DeepSeek 提供了多种使用方式&#xff0c;满足不同用户的需求和场景。本地部署在数据安全、性…...

windows平台上 oracle简单操作手册

一 环境描述 Oracle 11g单机环境 二 基本操作 2.1 数据库的启动与停止 启动: C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 星期五 7月 31 12:19:51 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. 连接到:…...

【弹性计算】弹性计算的技术架构

弹性计算的技术架构 1.工作原理2.总体架构3.控制面4.数据面5.物理设施层 虽然弹性计算的产品种类越来越多&#xff0c;但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例&#xff0c;探查其背后的技术秘密。 1.工作原理 云服务器通常以虚拟机的方…...

RAG(检索增强生成)落地:基于阿里云opensearch视线智能问答机器人与企业知识库

文章目录 一、环境准备二、阿里云opensearch准备1、产品文档2、准备我们的数据3、上传文件 三、对接1、对接文本问答 一、环境准备 # 准备python环境 conda create -n opensearch conda activate opensearch# 安装必要的包 pip install alibabacloud_tea_util pip install ali…...

【踩坑】pytorch模型导出部署onnx问题记录

问题1&#xff1a;repeat_interleave 无法转译 具体报错为&#xff1a; TypeError: torch._C.Value object is not iterable (Occurred when translating repeat_interleave).原因是我的模型代码中有&#xff1a; batch_indices torch.repeat_interleave(torch.arange(can…...

利用prompt技术结合大模型对目标B/S架构软件系统进行测试

利用prompt技术结合大模型对目标B/S架构软件系统进行测试,可参考以下步骤和方法: 测试需求理解与prompt设计 明确测试点:梳理B/S架构软件系统的功能需求、非功能需求(如性能、安全性、兼容性等),确定具体的测试点,如用户登录功能、数据查询功能、系统响应时间要求等。设…...

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?

DeepSeek vs ChatGPT&#xff1a;AI对决中的赢家是……人类吗&#xff1f; 文章目录 DeepSeek vs ChatGPT&#xff1a;AI对决中的赢家是……人类吗&#xff1f;一、引言1. 背景2. 问题 二、DeepSeek vs ChatGPT&#xff1a;谁更胜一筹&#xff1f;2.1 语言生成能力评测对比场景…...

基于ollama搭建本地deepseek大模型服务

基于ollama搭建本地deepseek大模型服务 简介准备工作系统要求ollama的安装ollama 模型ollama 安装流程ollama 如何运行大模型前端部署注意事项简介 本指南旨在帮助初学者在本地环境中设置和运行DeepSeek大模型服务。本文将使用Ollama平台来简化这一过程,确保即使是新手也能顺…...

elementUI rules 判断 el-cascader控件修改值未生效

今天修改一个前端项目&#xff0c;增加一个多选字段&#xff0c;使用的是el-cascader控件&#xff0c;因页面是通过引用子页面组件形式使用&#xff0c;出现一个点选后再勾选原有值&#xff0c;输入框内不展示或取消后的也未正常隐藏&#xff0c;如果勾选的值是全新的则其他已选…...

讯方·智汇云校华为授权培训机构的介绍

官方授权 华为授权培训服务伙伴&#xff08;Huawei Authorized Learning Partner&#xff0c;简称HALP&#xff09;是获得华为授权&#xff0c;面向公众&#xff08;主要为华为企业业务的伙伴/客户&#xff09;提供与华为产品和技术相关的培训服务&#xff0c;培养华为产业链所…...

力扣-二叉树-257 二叉树的所有路径

思路 除去根节点&#xff0c;每一层添加->val&#xff0c;然后使用前序遍历的顺序 代码 class Solution { public:vector<string> res;void getTreePaths(string s, TreeNode* root){s "->";s to_string(root->val);if(root->left nullptr &…...