本文主要是介绍[已解决] 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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!