湖南网站建设价格费用,河南省南水北调建设管理局网站,福建城市建设厅网站,oa软件定制开发最近在搞视频检测问题#xff0c;在用到将视频分帧保存为图片时#xff0c;图片可以保存#xff0c;但是会出现(-215:Assertion failed) !_img.empty() in function cv::imwrite问题而不能正常运行#xff0c;在检查代码、检查路径等措施均无果后#xff0c;了解了视频分帧…最近在搞视频检测问题在用到将视频分帧保存为图片时图片可以保存但是会出现(-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 videos 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_pathC:/Users/15603917325/Desktop/video_coal/coal/video/6.mp4,save_pathC:/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 videos 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_pathC:/Users/15603917325/Desktop/video_coal/coal/video/6.mp4,save_pathC:/Users/15603917325/Desktop/video_coal/coal/pictures_coal) print(succeed) 正确输出分帧后的图片并保存在文件夹中