Error: !_img.empty() in function 'imwrite'

Error: !_img.empty() in function 'imwrite'

我想从名为 project.avi 的视频创建帧并将它们保存到 frameIn 文件夹。但是某些类型的错误不是让我完成的。我怎么解决这个问题。这是代码:

cap = cv2.VideoCapture('project.avi')

currentFrame = 0

while(True):

ret, frame = cap.read()

name = 'frameIn/frame' + str(currentFrame) + '.jpg'
print ("Creating file... " + name)
cv2.imwrite(name, frame)

frames.append(name)

currentFrame += 1

cap.release()
cv2.destroyAllWindows()

错误是:

Traceback (most recent call last):
  File "videoreader.py", line 28, in <module>
    cv2.imwrite(name, frame)
cv2.error: OpenCV(4.4.0) /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-2rx9f0ng/opencv/modules/imgcodecs/src/loadsave.cpp:738: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'

原因可能是图像是空的,所以, 在读取帧之前,您应该检查天气视频是否正确打开:cap.isOpened()。 然后,在执行 ret, frame = cap.read() 后检查 ret 变量值是否为真以确保正确抓取帧。

要清除的代码:

cap = cv2.VideoCapture('project.avi')
if cap.isOpened():
    current_frame = 0
    while True:
        ret, frame = cap.read()
        if ret:
            name = f'frameIn/frame{current_frame}.jpg'
            print(f"Creating file... {name}")
            cv2.imwrite(name, frame)
            frames.append(name)
        current_frame += 1
    cap.release()
cv2.destroyAllWindows()

希望对你有所帮助。