opencv 错误:!_img.empty()在函数“imwrite”中

9gm1akwq  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(309)

我想创建帧从视频命名为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'

hpxqektj

hpxqektj1#

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

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()

字符串
希望对你有帮助。

raogr8fs

raogr8fs2#

您提供的错误消息来自OpenCV的imwrite函数。它表示函数遇到Assert失败,因为输入image _img为空。
在您的代码片段中,似乎您正在尝试使用wget从URL下载图像,然后使用OpenCV的imwrite函数加载并保存它。但是,该错误表明无法正确下载或读取图像,导致图像为空。
错误消息还包括以下行:code->解析$image_url($image_url)...失败:名称或服务未知。这表明变量$image_url没有正确定义或解析为有效的URL。在wget命令中使用变量之前,请确保已为变量分配了有效的URL。
此外,在尝试使用OpenCV加载映像之前,请验证映像是否已成功下载,以及映像文件的路径是否正确。
如果您提供更多详细信息或共享相关代码片段,我可以帮助您进一步解决问题。

相关问题