Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过openCV将视频转换为帧_Python_Opencv_Frame_Jupyter Lab_Video Conversion - Fatal编程技术网

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,如果我能帮忙的话:)