【Python】【OpenCV】视频帧和摄像头帧操作 and 窗口显示

这篇具有很好参考价值的文章主要介绍了【Python】【OpenCV】视频帧和摄像头帧操作 and 窗口显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、读取写入视频文件

 1 import cv2
 2 
 3 # 创建一个视屏捕获对象
 4 videoCapture = cv2.VideoCapture('AVI.avi')
 5 
 6 # 获取视频的属性值,cv2.CAP_PROP_FPS获取视频帧率
 7 fps = videoCapture.get(cv2.CAP_PROP_FPS)
 8 
 9 # cv2.CAP_PROP_FRAME_WIDTH/HEIGHT 返回float类型 获取视频帧的宽高
10 size = int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), \
11        int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))
12 
13 '''
14 创建一个写入对象,将帧写入输出的视频
15 cv2.VideoWriter_fourcc()函数指定编码器为 I420
16 fps 和 size 指定输出的帧率和尺寸
17 '''
18 videoWrite = cv2.VideoWriter('Out.avi',
19                              cv2.VideoWriter_fourcc('I', '4', '2', '0'),
20                              fps, size
21                              )
22 
23 '''
24 对捕获到的视频对象进行读取帧,success表示是否成功读取一帧,frame表示当前帧。
25 循环读取写入输出视频。
26 '''
27 success, frame = videoCapture.read()
28 while success:
29        videoWrite.write(frame)
30        success, frame = videoCapture.read()

 

二、捕获摄像头帧

 1 import cv2
 2 
 3 cameraCapture = cv2.VideoCapture(0)
 4 
 5 fps = 30
 6 
 7 size = int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), \
 8         int(cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))
 9 
10 videoWriter = cv2.VideoWriter(
11     'OutVideo_GRAB.avi',
12     cv2.VideoWriter_fourcc('I', '4', '2', '0'),
13     fps,
14     size
15 )
16 
17 success, frame = cameraCapture.read()
18 
19 numFramesRemaining = 10 * fps
20 while success and numFramesRemaining > 0:
21     videoWriter.write(frame)
22     success, frame = cameraCapture.read()
23     numFramesRemaining -= 1

和视频的读取写入没有什么差异,都是需要先创建一个VideoCapture Object来操作,下述是细微差别:

3   Line:VideoCapture(0),其中 0 代表设备,还可以1,2,3 分别代表不同的摄像头(如果存在),也可以输入网络摄像头,直接替换成URL即可

5   Line:需要手动设置fps的值

19 Line:需要设定一个时间,numFramesRemaining代表持续捕获300个帧,而每30个帧为一秒,所以将生成一个10秒钟的视频文件

 

三、窗口显示图片

1 import cv2
2 
3 img = cv2.imread('CopyPic.png')
4 cv2.imshow('', img)
5 cv2.waitKey()
6 cv2.destroyAllWindows()

 

 

四、窗口显示摄像头

 1 import cv2
 2 
 3 # 检测窗口是否被点击
 4 clicked = False
 5 
 6 
 7 # 定义鼠标事件处理函数
 8 def onMouse(event: int, x, y, flags, param):
 9     global clicked
10     if event == cv2.EVENT_LBUTTONUP:
11         clicked = True
12 
13 
14 # 创建一个视频对象
15 cameraCapture = cv2.VideoCapture(0)
16 # 定义窗口命
17 cv2.namedWindow('Camera')
18 # 将鼠标回调函数,将鼠标事件处理函数和窗口关联起来
19 cv2.setMouseCallback('Camera', onMouse)
20 
21 print('Showing camera feed. Click window or press any key to stop.')
22 # 获取当前时间的摄像头帧
23 success, frame = cameraCapture.read()
24 
25 # 循环获取当前时间的摄像头帧,当按下任意按键 or 点击鼠标时则停止显示
26 while success and cv2.waitKey(1) == -1 and not clicked:
27     cv2.imshow('Camera', frame)
28     success, frame = cameraCapture.read()
29 
30 # 关闭窗口
31 cv2.destroyAllWindows()
32 
33 # 释放摄像头资源
34 cameraCapture.release()

 

针对多摄像头,我们需要先探明摄像头的设备号:

 1 import cv2
 2 
 3 for item in range(10):
 4     # 创建一个object
 5     camera = cv2.VideoCapture(item)
 6 
 7     # 查询此摄像头是否能打开,如果不能则跳过,并输出一条 Error Message
 8     if not camera.isOpened():
 9         print(f"Can\'t open camera {item}")
10         continue
11 
12     # 读取摄像头帧率
13     while True:
14         success, frame = camera.read()
15         # 当摄像头帧读取失败则跳过
16         if not success:
17             break
18 
19         cv2.imshow(f'Camera device number: {item}', frame)
20 
21         # 等待1毫秒,检查用户是否有键盘输入‘q’
22         if cv2.waitKey(1) == ord('q'):
23             break
24 
25     camera.release()
26     cv2.destroyAllWindows()

 文章来源地址https://www.toymoban.com/news/detail-747004.html

到了这里,关于【Python】【OpenCV】视频帧和摄像头帧操作 and 窗口显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 树莓派利用python-opencv使用CSI摄像头调用监控视频

    目录 一、安装python-opencv。 二、使用工具Xshell7和MobaXterm 三、连接并打开CSI摄像头 3.1连线如图所示: 3.2打开摄像头 四、编写摄像头代码调用摄像头         一定要选择配置好的安装python-opencv,不要去配置安装,然后还cmake编译,没有必要基本上安装过程都会报2-3个错误,还

    2023年04月17日
    浏览(40)
  • Opencv(C++)笔记--打开摄像头、保存摄像头视频

    关键代码语句: ① VideoCapture cam(0); ② cam.read(img); ③ imshow(\\\"cam\\\", img); 关键代码: ①VideoWriter vw ②vw.open(): fourcc指定编码格式(常见编码方式)、 fps指定帧率、 Size指定大小 ③vw.write() 注:在Windows上执行上述代码可能会报以下错误: 解决方法:在输出的网址下载对应版本的库

    2024年02月11日
    浏览(40)
  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(57)
  • OpenCV(视频加载与摄像头使用)

    目录 1、VideoCapture类 2、视频属性get()  3、视屏文件保存

    2024年02月12日
    浏览(36)
  • 4.通过Opencv采集摄像头视频数据

    VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 示例程序: 运行结果: 从视频文件中读取视频帧 只处理视频,不处理音频,所以读取到的视频没有声音 播放速度设置 Vi

    2023年04月22日
    浏览(34)
  • OpenCv:采集摄像头视频、读取视频帧与视频录制

    目录 一、涉及OpenCv函数 二、什么是帧、帧的大小代表什么 三、摄像头获取视频数据 四、录制视频并保存 从设备,可以是摄像头可以是本地视频, 获取视频的函数 cv.VideoCapture()。 本函数作用在于创建一个VideoCapture或者VideoWriter对象,真正的读取和写入是通过创建的对象进行

    2024年02月16日
    浏览(34)
  • 使用OpenCV调用摄像头和读取视频图片

    要捕获视频,你需要创建一个 VideoCapture 对象。它的参数是设备索引的名称。设备索引就是指定哪个摄像头的数字。正常情况下,内部摄像头可以通过传入0来调用,传递1来选择外置的第二个相机,以此类推。在此之后,你可以逐帧捕获。但是在最后,不要忘记释放俘虏。 直

    2024年02月08日
    浏览(38)
  • 基于opencv的人脸检测(图片、视频、摄像头)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、检测图片中的人脸 二、检测视频与摄像头中的人脸 总结 人脸检测识别一直是个热门的研究问题,同时也是opencv中一个实现相对容易的课题。 OpenCV自带了函数detectMultiScale()可以实现对行人

    2024年02月13日
    浏览(28)
  • OpenCV获取网络摄像头实时视频流

    参考文章: [常用工具] OpenCV获取网络摄像头实时视频流_opencv网络摄像头 [常用工具] OpenCV获取网络摄像头实时视频流_opencv网络摄像头_落痕的寒假的博客-CSDN博客 在使用OpenCv处理视频时,无论是视频文件还是摄像头画面,都要使用VideoCapture类来进行每一帧图像的处理。当我们

    2024年02月01日
    浏览(32)
  • openCV使用c#操作摄像头

    效果如下: 1.创建一个winform的窗体项目(框架.NET Framework 4.7.2) 2.Nuget引入opencv的c#程序包(版本最好和我一致) 3.后台代码

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包