Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 Python 和 OpenCV 录制视频教程_创想鸟

使用 Python 和 OpenCV 录制视频教程

使用 python 和 opencv 录制视频教程

本文旨在提供一个清晰、简洁的指南,介绍如何使用 Python 和 OpenCV 库录制视频。我们将解决录制视频时可能遇到的“文件损坏”问题,并提供一种可靠的解决方案,确保成功录制高质量的视频文件。通过本文,你将学会如何初始化摄像头、设置视频分辨率、录制视频以及正确释放资源。

使用 OpenCV 录制视频

OpenCV (Open Source Computer Vision Library) 是一个广泛使用的计算机视觉库,提供了丰富的图像和视频处理功能。以下是如何使用 OpenCV 录制视频的步骤:

1. 安装 OpenCV

首先,确保你已经安装了 OpenCV 库。如果没有,可以使用 pip 安装:

pip install opencv-python

2. 编写录制视频的代码

以下是一个基本的 Python 脚本,用于从摄像头捕获视频并将其保存到文件中。

立即学习“Python免费学习笔记(深入)”;

import cv2cap = cv2.VideoCapture(0)  # 0 表示默认摄像头# 设置摄像头分辨率 (可选)cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)# 获取实际的摄像头分辨率width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)size = (width, height)# 定义视频编码器和输出文件fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 使用 MP4 编码writer = cv2.VideoWriter('recording.mp4', fourcc, 30.0, size) # 30.0 是帧率recording = False # 添加录制状态控制while True:    ret, frame = cap.read()    if ret:        cv2.imshow("video", frame)        if recording:            writer.write(frame)    key = cv2.waitKey(1)    if key == ord('q'):        break    elif key == ord('r'): # 按 r 键切换录制状态        recording = not recording        print(f'recording: {recording}')# 释放资源cap.release()writer.release()cv2.destroyAllWindows()

代码解释:

cv2.VideoCapture(0): 初始化摄像头。参数 0 表示默认摄像头。如果你的电脑有多个摄像头,可以尝试使用 1、2 等。cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) 和 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720): 设置摄像头的分辨率。这些设置是可选的,如果摄像头不支持所设置的分辨率,它可能会使用默认分辨率。cap.get(cv2.CAP_PROP_FRAME_WIDTH) 和 cap.get(cv2.CAP_PROP_FRAME_HEIGHT): 获取摄像头实际的分辨率。cv2.VideoWriter_fourcc(*’mp4v’): 定义视频编码器。’mp4v’ 表示使用 MP4 编码。常见的编码器还有 ‘XVID’、’MJPG’ 等。cv2.VideoWriter(‘recording.mp4’, fourcc, 30.0, size): 创建 VideoWriter 对象,用于将视频帧写入文件。参数分别是文件名、编码器、帧率和分辨率。cap.read(): 从摄像头读取一帧图像。返回两个值:ret 表示是否成功读取,frame 是图像数据。cv2.imshow(“video”, frame): 显示图像。writer.write(frame): 将图像写入视频文件。cv2.waitKey(1): 等待 1 毫秒,以便 OpenCV 处理键盘输入。cap.release()、writer.release() 和 cv2.destroyAllWindows(): 释放资源。

3. 解决 “文件损坏” 问题

常见的一个问题是,录制的视频文件大小为 0KB,并且无法播放,显示 “文件损坏”。这通常是因为摄像头不支持你设置的分辨率。

解决方案:

不要硬编码分辨率,而是先设置期望的分辨率,然后从摄像头获取实际的分辨率,并将其用于 VideoWriter 的初始化。

原因解释:

摄像头可能不支持你手动设置的 1280×720 分辨率。即使你设置了,摄像头也可能使用默认分辨率。如果 VideoWriter 使用了错误的分辨率,录制的文件就会损坏。通过先设置分辨率,再获取实际分辨率,可以确保 VideoWriter 使用正确的分辨率。

4. 注意事项

编码器选择: 不同的编码器可能对视频质量和文件大小产生影响。’mp4v’ 是一个常见的选择,但你也可以尝试其他编码器,如 ‘XVID’。帧率: 帧率 (FPS) 表示每秒钟的帧数。较高的帧率通常会产生更流畅的视频,但也会增加文件大小。资源释放: 确保在程序结束时释放摄像头和 VideoWriter 对象,否则可能会导致资源泄漏。摄像头权限: 确保你的程序有访问摄像头的权限。

5. 总结

通过本文,你学习了如何使用 Python 和 OpenCV 录制视频。你还学会了如何解决常见的 “文件损坏” 问题,并了解了一些注意事项。希望这些知识能帮助你成功录制高质量的视频文件。记住,理解硬件设备的特性并动态适应是解决问题的关键。

以上就是使用 Python 和 OpenCV 录制视频教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1376216.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
SQLAlchemy异步会话与PostgreSQL连接池深度解析
上一篇 2025年12月14日 15:42:52
如何使用Pandas高效更新SQL表中的数据
下一篇 2025年12月14日 15:43:07

相关推荐

  • Win10电脑加快缩略图加载速度的操作方法?

    Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?

    若您的电脑配置较低,并且已经使用了较长时间,可能会发现打开资源管理器时速度较慢,绿色进度条前进得十分迟缓。此时,您可以尝试这一方法,在组策略中对其进行设置,关闭缩略图缓存功能。 Win10系统优化缩略图加载: 使用组策略 第一步:通过在“开始”菜单输入编辑组策略或者gpedit.msc来打开组策略。…

    2026年9月25日 • 用户投稿
    000
  • Java布尔方法条件逻辑解析与预期行为校正

    Java布尔方法条件逻辑解析与预期行为校正Java布尔方法条件逻辑解析与预期行为校正Java布尔方法条件逻辑解析与预期行为校正Java布尔方法条件逻辑解析与预期行为校正

    本文旨在探讨Java中布尔方法条件表达式的常见误解,通过一个具体的kindaLiked()方法案例,详细分析代码逻辑与预期行为不符的原因。我们将演示如何精确定义条件,确保方法返回结果与业务逻辑一致,并提供示例代码、调试技巧及最佳实践,以帮助开发者编写更准确、可维护的布尔判断逻辑。 理解布尔方法与条件…

    2026年9月25日 • 用户投稿
    100
  • sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧

    sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧

    使用Ctrl+R或Cmd+R打开“前往符号”面板,可快速定位函数和类;通过安装SideBarEnhancements等插件,在侧边栏查看文件符号树;配合LSP插件支持,使用F12实现“转到定义”跨文件跳转;自定义快捷键如Ctrl+Shift+R优化操作效率。 在使用 Sublime Text 编辑代…

    2026年9月25日 • 用户投稿
    300
  • windows怎么查看wifi信号强度_windows系统查看wifi信号强度的方法

    首先检查Wi-Fi信号强度以判断网络问题,可通过任务栏图标查看图形化信号格数及百分比;其次使用命令提示符输入netsh wlan show interfaces获取信号强度百分比和SSID等详细信息;最后可借助Acrylic Wi-Fi Home等第三方工具扫描周边网络的RSSI值与信道占用情况,分…

    2026年9月25日
    000
  • mysql怎么创建新连接

    mysql怎么创建新连接mysql怎么创建新连接mysql怎么创建新连接mysql怎么创建新连接

    要创建新的 MySQL 连接,需要导入 MySQL Connector,然后依次创建连接对象、验证连接、创建游标对象、执行查询、检索结果,最后关闭连接。 如何创建新的 MySQL 连接 若要创建新的 MySQL 连接,可以使用以下步骤: 1. 导入 MySQL Connector 导入 MySQL …

    2026年9月25日 • 用户投稿
    000
  • Debian Sniffer支持远程监控吗

    Debian Sniffer支持远程监控吗Debian Sniffer支持远程监控吗Debian Sniffer支持远程监控吗Debian Sniffer支持远程监控吗

    目前尚无确切信息表明Debian Sniffer是否支持远程监控功能。 要实现远程监控,通常需要以下步骤: 远程监控常用方法: 专用应用程序: 许多监控系统都配备专属的手机或电脑应用程序,允许用户远程查看监控画面和数据。网络配置: 确保监控设备连接至网络,并正确配置IP地址、子网掩码、网关和DNS服…

    2026年9月25日 • 用户投稿
    200
  • 关闭Win10这三大新功能:系统重回Win7风

    关闭Win10这三大新功能:系统重回Win7风关闭Win10这三大新功能:系统重回Win7风关闭Win10这三大新功能:系统重回Win7风关闭Win10这三大新功能:系统重回Win7风

    发布超过3年,win10依然未能全面取代win7,反而因各类问题频繁遭到批评。 Softpedia发表文章,指出Win10目前的三项核心功能——Cortana(小娜)、Aciton Centre(操作中心)以及Timeline(时间线),其关闭方式过于繁琐且隐蔽,建议微软提供更加便捷的一键屏蔽选项。…

    2026年9月25日 • 用户投稿
    000
  • 电脑机箱风道设计对散热效率的影响有多大?

    电脑机箱风道设计对散热效率的影响有多大?电脑机箱风道设计对散热效率的影响有多大?电脑机箱风道设计对散热效率的影响有多大?电脑机箱风道设计对散热效率的影响有多大?

    合理的机箱风道设计能有效降低温度,提升硬件稳定性。判断风道是否合理可通过监控软件查看CPU、GPU温度(如满载超80℃或85℃),观察灰尘堆积情况及手触感知风量分布。理想风道为前进风、后排风的水平气流,塔式散热器应朝向后排风扇,高端显卡可加底面进风。理线也关键,杂乱线材会阻碍气流,需用扎带等整理。风…

    2026年9月25日 • 用户投稿
    000
  • 利用OSHI库监测与计算磁盘活动时间及传输速率

    利用OSHI库监测与计算磁盘活动时间及传输速率利用OSHI库监测与计算磁盘活动时间及传输速率利用OSHI库监测与计算磁盘活动时间及传输速率利用OSHI库监测与计算磁盘活动时间及传输速率

    本文详细介绍了如何利用Java OSHI库获取磁盘的活动时间与传输速率。通过HWDiskStore类的getReads()、getWrites()和getTransferTime()方法,结合时间间隔内的增量数据,可以精确计算出磁盘的活跃百分比和每秒传输次数。教程提供了示例代码,并逐步解析了数据采集…

    2026年9月25日 • 用户投稿
    000
  • 如何用豆包AI自动生成单元测试 提升代码质量的AI秘诀

    如何用豆包AI自动生成单元测试 提升代码质量的AI秘诀如何用豆包AI自动生成单元测试 提升代码质量的AI秘诀如何用豆包AI自动生成单元测试 提升代码质量的AI秘诀如何用豆包AI自动生成单元测试 提升代码质量的AI秘诀

    使用豆包ai可以高效生成全面的单元测试代码,首先确保函数或类逻辑清晰稳定,如定义了clean_input函数用于清理用户输入字符串;接着提示ai生成测试用例时描述功能背景,ai将自动覆盖正常值、空值、边界值及异常输入等场景;生成的测试样例包括空字符串、none、前后空格、大写字母、数字符号等情况;随…

    2026年9月25日 • 用户投稿
    100
  • 为什么高配置电脑仍会出现软件卡顿现象?

    为什么高配置电脑仍会出现软件卡顿现象?为什么高配置电脑仍会出现软件卡顿现象?为什么高配置电脑仍会出现软件卡顿现象?为什么高配置电脑仍会出现软件卡顿现象?

    高配置电脑卡顿多由软件、驱动、系统配置及使用习惯导致。需通过任务管理器、资源监视器等工具排查CPU、内存、磁盘占用,检查温度与驱动状态;优化电源模式、关闭无用后台程序、更新或回滚显卡驱动,并合理设置虚拟内存,才能全面提升系统流畅度。 高配置电脑出现软件卡顿现象,这其实是个挺常见,也常常让人感到困惑的…

    2026年9月25日 • 用户投稿
    100
  • exe文件打不开的解决方法

    exe文件打不开的解决方法exe文件打不开的解决方法exe文件打不开的解决方法exe文件打不开的解决方法

    exe文件无法运行时该怎么办呢?不少朋友都曾遇到过这种情况,这可能与某些病毒或第三方程序有关。通常来说,exe文件无法打开是因为注册表被错误地修改了所致。在这种情况下,我们可以利用记事本来调整注册表以解决问题。接下来就让小编带领大家了解具体的解决步骤吧! 在常规操作下,电脑的安全卫士会对exe文件进…

    2026年9月25日 • 用户投稿
    100
  • sublime怎么恢复上次打开的文件_sublime自动恢复文件会话设置方法

    sublime怎么恢复上次打开的文件_sublime自动恢复文件会话设置方法sublime怎么恢复上次打开的文件_sublime自动恢复文件会话设置方法sublime怎么恢复上次打开的文件_sublime自动恢复文件会话设置方法sublime怎么恢复上次打开的文件_sublime自动恢复文件会话设置方法

    Sublime Text 能自动恢复文件和布局,需确保设置中”remember_open_files”: true且”hot_exit”: false,正常关闭程序以保存会话,会话文件位于系统指定路径,若丢失可手动重命名备份文件恢复。 Sublime …

    2026年9月25日 • 用户投稿
    200
  • 使用OSHI库精确测量磁盘活动时间和传输速率

    使用OSHI库精确测量磁盘活动时间和传输速率使用OSHI库精确测量磁盘活动时间和传输速率使用OSHI库精确测量磁盘活动时间和传输速率使用OSHI库精确测量磁盘活动时间和传输速率

    本文详细介绍了如何利用OSHI库的HWDiskStore类来精确测量磁盘活动时间百分比和数据传输速率。通过获取磁盘读写操作、总传输时间等累积性统计数据的快照,并计算两次快照之间的差值,可以准确分析特定时间段内的磁盘活跃度及每秒传输次数,从而有效监控系统磁盘性能。 OSHI库与磁盘性能监控 oshi(…

    2026年9月25日 • 用户投稿
    100
  • sublime的拼写检查怎么添加自定义词典_sublime拼写检查自定义词典设置

    sublime的拼写检查怎么添加自定义词典_sublime拼写检查自定义词典设置sublime的拼写检查怎么添加自定义词典_sublime拼写检查自定义词典设置sublime的拼写检查怎么添加自定义词典_sublime拼写检查自定义词典设置sublime的拼写检查怎么添加自定义词典_sublime拼写检查自定义词典设置

    Sublime Text拼写检查可通过用户词汇表自定义,首先启用spell_check并设置dictionary路径,然后右键误报词选“Add to Dictionary”或手动编辑User/Dictionary.sublime-settings添加词汇,也可复制.dic文件到User目录创建专用词…

    2026年9月25日 • 用户投稿
    100
  • Chrome浏览器怎么查看某个插件的资源占用_插件资源占用情况监控技巧

    Chrome浏览器怎么查看某个插件的资源占用_插件资源占用情况监控技巧Chrome浏览器怎么查看某个插件的资源占用_插件资源占用情况监控技巧Chrome浏览器怎么查看某个插件的资源占用_插件资源占用情况监控技巧Chrome浏览器怎么查看某个插件的资源占用_插件资源占用情况监控技巧

    首先使用Shift+Esc打开Chrome任务管理器,查看各扩展程序的CPU和内存占用情况,识别高耗能插件;接着通过chrome://extensions页面禁用或删除异常扩展;最后可启用chrome://flags中的悬停显示内存功能,便于实时监控标签页资源消耗。 如果您发现Chrome浏览器运行…

    2026年9月25日 • 用户投稿
    200
  • VBA使用API_04:创建按钮

    VBA使用API_04:创建按钮VBA使用API_04:创建按钮VBA使用API_04:创建按钮VBA使用API_04:创建按钮

    在创建了窗体的基础上,接下来我们将进一步添加一个按钮来增强程序的交互性。按钮是windows系统中预定义的控件,因此无需额外注册,直接使用createwindowex函数即可。在创建窗体之后、显示窗体之前,我们可以插入代码来创建这个按钮。 按钮的父窗口句柄(hWndParent)应当设置为之前创建的…

    2026年9月24日 • 用户投稿
    200
  • DeepSeek R1T2— TNG推出的改进型AI语言模型,基于DeepSeek

    DeepSeek R1T2— TNG推出的改进型AI语言模型,基于DeepSeekDeepSeek R1T2— TNG推出的改进型AI语言模型,基于DeepSeekDeepSeek R1T2— TNG推出的改进型AI语言模型,基于DeepSeekDeepSeek R1T2— TNG推出的改进型AI语言模型,基于DeepSeek

    deepseek r1t2 是 tng 在 deepseek 原始模型基础上开发的增强型语言模型。该模型采用 tri-mind 架构,融合了 deepseek r1-0528、r1 和 v3-0324 三个基础模型的优势,通过 assembly of experts(aoe)技术整合推理能力、结构化…

    2026年9月24日 • 用户投稿
    1000
  • 微软终止Cortana支持:Windows 10迎来重大调整

    微软终止Cortana支持:Windows 10迎来重大调整微软终止Cortana支持:Windows 10迎来重大调整微软终止Cortana支持:Windows 10迎来重大调整微软终止Cortana支持:Windows 10迎来重大调整

    N软网消息,微软近日宣布,将在Windows 10系统中停止对Cortana的支持。这是继Windows 11中取消Cortana支持之后的进一步动作,微软正将重心转移到Windows Copilot、Microsoft 365 Copilot以及Bing Chat等新技术上。 曾有人预计,微软会在…

    2026年9月24日 • 用户投稿
    100
  • 为什么有些SSD参数漂亮但实际体验却令人失望?

    为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?

    SSD实际体验不佳的核心在于纸面参数仅反映理想条件下的峰值性能,而真实使用中受主控、闪存类型、SLC缓存耗尽、DRAM缓存缺失、固件优化不足及散热不良等因素影响,导致持续写入速度骤降、系统卡顿等问题。 很多时候,我们看着SSD产品页面上那些漂亮的顺序读写速度,比如几千MB/s,或者惊人的IOPS,心…

    2026年9月24日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信