[已解决] 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

相关文章

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错