[已解决] cv2.VideoCapture().read()提取视频帧返回None,cv2.VideoCapture().isOpended返回True

2024-01-10 21:20

本文主要是介绍[已解决] cv2.VideoCapture().read()提取视频帧返回None,cv2.VideoCapture().isOpended返回True,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 问题:
    • 解决方法:

问题:

用下面代码提取视频帧并保存成图片,然而res一直返回False,路径都没问题,用isOpended()检查返回也是 True。

import os  
import cv2  """  
功能:将视频转成图片(提取视频的每一帧图片)  1.能够设置多少帧提取一帧图片  2.可以设置输出图片的大小及灰度图  3.手动设置输出图片的命名格式  
"""  
def ExtractVideoFrame(video_input,output_path):  # 输出文件夹不存在,则创建输出文件夹  if not os.path.exists(output_path):  os.mkdir(output_path)  times = 0 # 用来记录帧  frame_frequency = 10 # 提取视频的频率,每frameFrequency帧提取一张图片,提取完整视频帧设置为1  count = 0 # 计数用,分割的图片按照count来命名  cap = cv2.VideoCapture(video_input) # 读取视频文件  print('开始提取', video_input, '视频的图片')  while True:  times += 1  res, image = cap.read() # 读出图片。res表示是否读取到图片,image表示读取到的每一帧图片  if not res:  print('图片提取结束')  break  if times % frame_frequency == 0:  # picture_gray = CV2.cvtColor(image, CV2.COLOR_BGR2GRAY)  # 将图片转成灰度图  # image_resize = CV2.resize(image, (368, 640))            # 修改图片的大小  img_name = str(count).zfill(6)+'.jpg'  cv2.imwrite(output_path + os.sep + img_name, image)  count += 1  print(output_path + os.sep + img_name) # 输出提示  cap.release()  
if __name__=="__main__":
video_input = ''
output_path = ''
ExtractVideoFrame(video_input,output_path)

解决方法:

保证安装的opencv-python 和opencv-contrib-python版本一致,如不一致卸载重装一个

pip list  #检查安装版本

如果还没解决

pip uninstall opencv-python-headless
pip install "opencv-python-headless<4.3"

最终

pip list

之后如下图

在这里插入图片描述

这篇关于[已解决] cv2.VideoCapture().read()提取视频帧返回None,cv2.VideoCapture().isOpended返回True的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/592102

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField