opencv读取摄像头和视频数据

news2024/12/30 3:10:00

  大家好,我是csdn的博主:lqj_本人

这是我的个人博客主页:

lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343哔哩哔哩欢迎关注:小淼前端

小淼前端的个人空间_哔哩哔哩_bilibili

本篇文章主要讲述python的人工智能视觉领域(opencv),本篇文章已经成功收录python人工智能视觉(opencv)从入门到实战专栏中:

https://blog.csdn.net/lbcyllqj/category_12200666.htmlicon-default.png?t=N176https://blog.csdn.net/lbcyllqj/category_12200666.html

视频采集

·视频是由图片组成的,视频的每一帧就是一张图片,一般30帧,表示一秒显示30张图片;

·cv2.VideoCapture可以捕获摄像头,用数字来表示不同的设备,比如:0,1;

·如果是视频文件,可以指定路径即可;

打开视频文件

vc = cv2.VideoCapture(xxx.mp4) #xxx.mp4是要读取的你的视频目录

打开摄像头

vc = cv2.VideoCapture(0)          #这里的0是代表本机的摄像头,比如用笔记本的话,那么0就代表我们笔记本的内置摄像头

首先创建导入cv库及创建窗口

import cv2 #导入cv2库

cv2.namedWindow('video', cv2.WINDOW_NORMAL)  # 创建一个窗口名字为window
cv2.resizeWindow('video', 800, 600)  # 更改窗口的大小

循环读取摄像头的每一帧

我们可以用while来判断循环

while True:
    #读取一帧数据,返回标记和这一帧数据,True表示读到了数据,False表示没读到数据
    ret,frame = cap.read()
    #可以根据ret做个判断
    if not ret:
        #没读到数据,直接退出
        break

显示数据

注意下面的frame就是从我们导入的MP4中得到的每一帧的图片集

    #显示数据
    cv2.imshow('video',frame)

绑定键盘响应事件

    key = cv2.waitKey(10)
    if key & 0xFF == ord('q'):#键盘q键退出程序
        break

释放窗口及资源

cap.release()
cv2.destroyAllWindows()

注意

错误的尝试:

1.cap = cv2.VideoCapture(0) 如果只存在一个摄像头,当我们调用一个不存在的摄像头,比如:cv2.VideoCapture(1),就会出现窗口闪退

解释:因为我们调用的摄像头1,但是我们的机器中并不存在此摄像头,所以我们如果按照上述流程编写代码,运行时会直接判断为False,直接cap.release()cv2.destroyAllWindows()释放窗口!

2.key = cv2.waitKey(10),()中只能为整数,如果我们播放延迟事件为小数后其他则包出现报错等问题!

完整学习代码

import cv2 #导入cv2库

cv2.namedWindow('video', cv2.WINDOW_NORMAL)  # 创建一个窗口名字为window
cv2.resizeWindow('video', 800, 600)  # 更改窗口的大小

cap = cv2.VideoCapture(0)
while True:
    #读取一帧数据,返回标记和这一帧数据,True表示读到了数据,False表示没读到数据
    ret,frame = cap.read()
    #可以根据ret做个判断
    if not ret:
        #没读到数据,直接退出
        break
    #显示数据
    cv2.imshow('video',frame)
    key = cv2.waitKey(10)
    if key & 0xFF == ord('q'):
        break
#释放资源
cap.release()
cv2.destroyAllWindows()


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

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

相关文章

TensorRT和DLA(Deep Learning Accelerator)

TensorRT和DLA(Deep Learning Accelerator) 点击此处加入NVIDIA开发者计划 文章目录TensorRT和DLA(Deep Learning Accelerator)12.1. Running On DLA During TensorRT Inference注意:对于任何张量,索引维度的总体积加上请求的批量大小不得超过此函数返回…

Docker 面试知识点

Docker 是什么? 是实现容器技术的一种工具是一个开源的应用容器引擎使用 C/S 架构模式,通过远程API 来管理 (我们本机是 C,docker 引擎是 S,实际的构建过程是在 docker 引擎下完成的)可以打包一个应用及依赖包到一个轻量级、可移植的容器中 …

Hbase 数据迁移

Hbase 数据迁移 可选方案对比 l 已验证方案操作说明: n Export&import u 导出命令及示例 hbase org.apache.hadoop.hbase.mapreduce.Export “表名” 文件路径 导出至本地文件系统: ./bin/hbase org.apache.hadoop.hbase.mapreduce.Export ‘defa…

UnityBurst系统批量计算的插件入门

什麽是Burst系統做一些批量計算需要,比较难用,针无两头利如果不需要“密集”计算,就帧的不需要,到底什么是密集计算呢,for循环不密集么,while循环不密集么?安装Burst因为发现一个不错项目的插件…

Zookeeper实现分布式锁

文章目录ZK节点类型watch监听机制Zookeeper实现分布式锁锁原理创建锁的过程释放锁的过程ZK锁的种类代码实现Zookeeper是一个开源的分布式协调服务,是一个典型的分布式数据一致性解决方案。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅,负载均…

【C/C++基础练习题】简单指针与数组使用练习题

🍉内容专栏:【C/C要打好基础啊】 🍉本文内容:简单指针与数组练习题(复习之前写过的实验报告) 🍉本文作者:Melon西西 🍉发布时间 :2023.2.12 目录 1.vector​编…

async thunk 解决 API 调用的依赖问题

async thunk 解决 API 调用的依赖问题 一句话节省看下面一堆内容的时间就是: async thunk 中可以使用 async/await 锁住其他的 action 操作 一般 API 之间存在三种情况: A 和 B 之间没有依赖关系 这样的情况下,A 和 B 可以各调用各的&#x…

最近大热的 chatGPT 会取代你的工作吗?

ChatGPT 由于其高效的自然语言处理能力,它最容易取代的领域可能是: 文本分类:ChatGPT 可以用作文本分类系统,对文本进行分类 聊天机器人:ChatGPT 可以制作聊天机器人,提供人性化的交互体验 文本生成&…

策略游戏与实践反馈

早上看到time(李培楠)居然击败maru得了IEM的冠军,加上即时战略游戏的没落,星际2的研发停止,以及最近曾经被大家膜拜的暴雪闹出的各种事情,各种百感交集吧,从2000年上手星际争霸1开始&#xff0c…

【SPSS】数据预处理基础教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

2.10、时间片轮转、优先级调度算法、多级反馈队列调度算法

Tips:各种调度算法的学习思路 算法思想 算法规则 这种调度算法是用于作业调度还是进程调度? 抢占式? 非抢占式? 优点和缺点 是否会导致饥饿\color{red}饥饿饥饿 某 进程/作业 长期得不到服务 1、时间片轮转(RR, Round-Robin) 1.1、例…

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(2)

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(2) 目录 ​​​​​​​款式二:心形实时显示认识多长时间桃花飞舞(爱心)款 1、拷贝完整源代码 2、拷贝完整js代码 3、…

漏洞修复 Zookeeper、MySQL、Elasticsearch

漏洞修复 一、HTTP漏洞修复 1.1 漏洞说明 1.2 漏洞修复 1.2.1 升级HTTPD到最新版本(2.4.53) 1.2.1.1 服务器有网的情况下执行以下操作: 安装CodeIT库 cd /etc/yum.repos.d wget https://repo.codeit.guru/codeit.el7.repo 更新httpd y…

解决需求变更难题的8大方案

需求变更8大原因为什么会出现需求变更,这是由于需求约束、规则有了新的变化、由于政策发生变化,客户、沟通方式、流程化、标准化的问题等导致。这里在在过去的项目经验中,提出了常见的8大需求变更的原因。政策发生变化:指由于国家…

牛客网Python篇数据分析习题(三)

1.现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID Level:等级 Achievement_value:成就值 Num_of_exercise&a…

华为OD机试 - 去除多余空格(Python)| 真题+思路+代码

去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: 不考虑关键词起始和结束位置为空格的场景;单词的的开始和结束下标保证涵盖一个完整的单词,即一个坐标对开…

flurry+atos crash代码定位

flurry 崩溃日志代码定位 用symbolicatecrash工具分析iOS Crash文件通过atos符号化崩溃报告 1.写测试crash代码(方便检测最后crash是否定位正确 **MineViewController-xima方法-485行) 2.代码中flurry sdk打开crash追踪(默认为NO&#xff0…

Prometheus 告警规则

Prometheus 告警规则 Prometheus官方内置的第三方报警通知包括:邮件、 即时通讯软件(如Slack、Hipchat)、移动应用消息推送(如Pushover)和自动化运维工具(例如:Pagerduty、Opsgenie、Victorops) Promethe…

Allegro如何批量快速修改复用好的模块操作指导

Allegro如何批量快速修改复用好的模块操作指导 在做PCB设计的时候,相同模块可以用reuse复用的功能,可以大大提升效率,但是模块需要修改的时候,其它模块也要跟着修改,逐个再去复用一遍比较费时间,Allegro支持批量快速修改复用好的模块 前提是相同模块必须是相同的mdd文件…

Ray和极客们的创新之作,2月18日来发现

所在论坛:数据库技术创新&云原生论坛分享时段:2.18 10:30-11:00分享主题:云原生数据库PieCloudDB :Unbreakable安全特性剖析分享嘉宾:王淏舟,拓数派资深研发工程师 由中国开源软件推进联盟PostgreSQL分…