解决python-opencv:(-215:Assertion failed) _img.empty() in function ‘cv::imwrite‘在将视频分成帧图片,写入时出现的问题

news/2024/12/22 4:13:09/

最近在搞视频检测问题,在用到将视频分帧保存为图片时,图片可以保存,但是会出现(-215:Assertion failed) !_img.empty() in function 'cv::imwrite'问题而不能正常运行,在检查代码、检查路径等措施均无果后,了解了视频分帧的原理后,才解决了问题,就这一个问题,解决了两天才解决,心态炸裂。缺少分帧结束的判断条件,在写入前,加上:

if frame is None;

           break

else:

#导入必备的文件库
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取视频并分帧为图片
def video_to_frame(video_path,save_path):video = cv2.VideoCapture(video_path)index = 0if video.isOpened():f =int(video.get(cv2.CAP_PROP_FPS))    #读取视频帧率print("The video's fps is ",f)  #显示视频帧率rval,frame = video.read()      #读取视频帧    else:rval = Falsewhile rval:print(index)rval,frame = video.read()cv2.imwrite(save_path + "/"+ str(index)+".jpg",frame)index += 1  
if __name__ == "__main__":video_to_frame(video_path="C:/Users/15603917325/Desktop/video_coal/coal/video/6.mp4",save_path="C:/Users/15603917325/Desktop/video_coal/coal/pictures_coal")           print("succeed")

出现报错的原因很简单,在使用rval,frame读取视频的帧时,帧图片保存在frame对应的索引里。而在写入图片时,没有加入判断条件,当视频被分帧结束后,cv2.imread函数还在将空白信息写入文件夹,所以会出现报错,因此,只要在 cv2.imwrite(save_path + "/"+ str(index)+".jpg",frame)代码前一行加入判断条件,判断分帧结束后,停止写入即可。加入判断条件:

if frame is None:

            break

else:

就可以正确导入分帧后的图片了

在写入前加上判断条件:

#导入必备的文件库
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取视频并分帧为图片
def video_to_frame(video_path,save_path):video = cv2.VideoCapture(video_path)index = 0if video.isOpened():f =int(video.get(cv2.CAP_PROP_FPS))    #读取视频帧率print("The video's fps is ",f)  #显示视频帧率rval,frame = video.read()      #读取视频帧    else:rval = Falsewhile rval:print(index)rval,frame = video.read()if frame is None:breakelse:cv2.imwrite(save_path + "/"+ str(index)+".jpg",frame)index += 1  
if __name__ == "__main__":video_to_frame(video_path="C:/Users/15603917325/Desktop/video_coal/coal/video/6.mp4",save_path="C:/Users/15603917325/Desktop/video_coal/coal/pictures_coal")           print("succeed")

正确输出分帧后的图片,并保存在文件夹中:

 


http://www.ppmy.cn/news/763637.html

相关文章

关于 flex 的资料

转自:这个网站 Adobe官方 Adobe : http://www.adobe.com/cn/ Adobe: Flex 4 beta in a Week : http://www.adobe.com/devnet/flex/videotraining/flex4beta/ Adobe Cookbooks : http://cookbooks.adobe.com/home Flex API : http://www.oschina.net/uploads/doc/fle…

flex资料

Adobe官方 Adobe : http://www.adobe.com/cn/ Adobe: Flex 4 beta in a Week : http://www.adobe.com/devnet/flex/videotraining/flex4beta/ Adobe Cookbooks : http://cookbooks.adobe.com/home Flex API : http://www.oschina.net/uploads/doc/flex-doc-3.2/all-index-Symbo…

每周推荐阅读2013Q1汇总

上次把去年发的每周推荐阅读汇总贴了出来,收到了大家的肯定和鼓励,非常感谢。最近开始越来越多地阅读微信公共账号,比起微博这样的140字浅阅读,公共账号的信息似乎更有价值,当然前提是关注对的人,Q2开始我想…

FFmpeg学习总结

一、编译FFmpeg静态库 方法一: 1、要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端执行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2、xcode5以前都是gcc编译的,在xcode5以后都是clang编译,在脚本中…

flex相关文献

Adobe官方 Adobe : http://www.adobe.com/cn/ Adobe: Flex 4 beta in a Week : http://www.adobe.com/devnet/flex/videotraining/flex4beta/ Adobe Cookbooks : http://cookbooks.adobe.com/home Flex API : http://www.oschina.net/uploads/doc/flex-doc-3.2/all-ind…

HTML基础2

HTML 头部元素 <head> 定义关于文档的信息。 <title> 定义文档标题。 <base> 定义页面上所有链接的默认地址或默认目标。 <link> 定义文档与外部资源之间的关系。 <meta> 定义关于 HTML 文档的元数据。 <script> 定义客户端脚本…

爬虫概念与编程学习之如何爬取视频网站页面(三)

先看,前一期博客,理清好思路。 爬虫概念与编程学习之如何爬取网页源代码(一) 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二) 不多说,直接上代码。 编写代码 <

分布式技术一周技术动态 2016-08-14

分布式系统实践 1. 驱动海量大数据实时多维分析&#xff0c;优酷为什么会选择Druid&#xff1f; https://mp.weixin.qq.com/s?__bizMzA5NzkxMzg1Nw&mid2653160326&idx1&sn9c6a91df0ff088f799eefe2ca14926ca&scene0&key8dcebf9e179c9f3a11295728e84286c842…