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()
希望对你有所帮助。
我想从名为 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()
希望对你有所帮助。