问题描述
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,struct cv::Set<0,2,5>,2>::CvtHelper'
解决方法
请检查相机或视频是否已打开,而不是两次使用success
变量:
while cap.isOpened():
然后获取read
输出。
ret,frame = cap.read()
如果成功返回框架,请将其写入文件夹:
if ret:
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imwrite("output_frames/gray.png",gray)
由于您将拥有多个帧,因此可以使用计数器保存每个帧。
count = 0
while cap.isOpened():
ret,frame = cap.read()
if ret:
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imwrite("output_frames/gray_{}.png".format(count),gray)
count += 1
完整代码:
import cv2
cap = cv2.VideoCapture("video.mp4")
count = 0
while cap.isOpened():
ret,gray)
cv2.imshow("output",gray)
count += 1
if (cv2.waitKey(1) & 0xFF) == ord('q'):
break
cv2.destroyAllWindows()
cap.release()