通过openCV将视频转换成帧
Converting video into frames by openCV
在将视频转换为帧时,它确实转换了但显示此错误
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'
不用两次使用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, frame = cap.read()
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imwrite("output_frames/gray_{}.png".format(count), gray)
cv2.imshow("output", gray)
count += 1
if (cv2.waitKey(1) & 0xFF) == ord('q'):
break
cv2.destroyAllWindows()
cap.release()
在将视频转换为帧时,它确实转换了但显示此错误
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'
不用两次使用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, frame = cap.read()
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imwrite("output_frames/gray_{}.png".format(count), gray)
cv2.imshow("output", gray)
count += 1
if (cv2.waitKey(1) & 0xFF) == ord('q'):
break
cv2.destroyAllWindows()
cap.release()