gpt4 book ai didi

python - 如何使用cv2.imwrite从不同文件夹中的多个视频保存帧?

转载 作者:行者123 更新时间:2023-12-02 16:33:47 27 4
gpt4 key购买 nike

好的,所以我在互联网上进行了很多搜索,遇到了多种方法来从视频中提取帧,但是似乎没有一个方法适用于多个视频。所以我想出了自己的解决方案。但是到目前为止,我的状态是我可以从一个视频中提取帧并将其按名称保存在文件夹中。但是该代码不适用于第二个视频。以下是错误:

Traceback (most recent call last):
File "c:\Users\hp\Videos\multi.py", line 21, in <module>
cv2.imwrite(os.path.join(location , "frame%d.jpg" % counter), frame)
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'

这是我的完整代码
import os 
import cv2

def createFolder(directory):
try:
if not os.path.exists(directory):
os.makedirs(directory)
except OSError:
print ('Error: Creating directory. ' + directory)

listing = os.listdir('C:/Users/hp/Videos/TwoVideos')
counter = 0
for vid in listing:
createFolder('./data/'+vid)
vedeo = "C:/Users/hp/Videos/TwoVideos/"+vid
ret = 1
cap = cv2.VideoCapture(vedeo)
while ret:
ret, frame = cap.read()
location = './data/'+vid
cv2.imwrite(os.path.join(location , "frame%d.jpg" % counter), frame)
# cv2.imwrite("frame%d.jpg" % counter, frame)
counter = counter + 1

最佳答案

您应该先检查ret,然后再检查框架:

while ret: 
ret, frame = cap.read()

应该:
while True: 
ret, frame = cap.read()
if not ret : break

关于python - 如何使用cv2.imwrite从不同文件夹中的多个视频保存帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61850614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com