Python 通过openCV将视频转换为帧
将视频转换为帧时,它确实已转换,但会显示此错误Python 通过openCV将视频转换为帧,python,opencv,frame,jupyter-lab,video-conversion,Python,Opencv,Frame,Jupyter Lab,Video Conversion,将视频转换为帧时,它确实已转换,但会显示此错误 4 while success: 35 success, frame = cap.read() ---> 36 grayFrame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 37 if(success==False and frame==None): 38 pass error: OpenC
4 while success:
35 success, frame = cap.read()
---> 36 grayFrame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
37 if(success==False and frame==None):
38 pass
error: OpenCV(3.4.2) c:\miniconda3\conda-bld\opencv suite_1534379934306\work\modules\imgproc\src\color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'cv::CvtHelper<struct cv::Set<3,4,-1>,struct cv::Set<1,-1,-1>,struct cv::Set<0,2,5>,2>::CvtHelper'
4成功时:
35成功,框架=cap.read()
--->36灰色框架=cv2.CVT颜色(框架,cv2.COLOR\u BGR2GRAY)
37如果(成功==错误,帧==无):
38通行证
错误:OpenCV(3.4.2)c:\miniconda3\conda bld\OpenCV suite_153439934306\work\modules\imgproc\src\color.hpp:253:error:(-215:Assertion failed)VScn::contains(scn)和&VDcn::contains(dcn)和&VDepth::contains(depth)在函数“cv::CvtHelper::CvtHelper”中
检查摄像头或视频是否打开,而不是两次使用success
变量:
当cap.isOpened()时:
然后获取读取
输出
ret,frame=cap.read()
如果框架返回成功,请将其写入文件夹:
如果ret:
灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
cv2.imwrite(“输出帧/gray.png”,灰色)
由于将有多个帧,因此可以使用计数器保存每个帧
count=0
而cap.isOpened():
ret,frame=cap.read()
如果ret:
灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
imwrite(“输出帧/gray{}.png”。格式(计数),灰色)
计数+=1
完整代码:
导入cv2
cap=cv2.VideoCapture(“video.mp4”)
计数=0
而cap.isOpened():
ret,frame=cap.read()
如果ret:
灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
imwrite(“输出帧/gray{}.png”。格式(计数),灰色)
cv2.imshow(“输出”,灰色)
计数+=1
如果(cv2.waitKey(1)&0xFF)=ord('q'):
打破
cv2.destroyAllWindows()
第1章释放()
也许您需要将第一行更改为,frame=cap.read()
。是否检查了此项?是否将cap=cv2.VideoCapture(0)
更改为保存的视频路径?例如:cap=cv2.VideoCapture(“C:\\User\\\\\\\\\\\\\\\\my\u video.mp4”)
我的内核正在加载,它没有显示任何内容,也没有停止。当您更改路径时,它现在应该可以工作了!是的,它成功了!!非常感谢您的帮助@Ahmetglady,如果我能帮忙的话:)