Ошибка при попытке сохранить изображение с веб-камеры в OpenCV
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
cv.SaveImage("test.JPG", img)
Привет, я просто хочу сохранить изображение с моей веб-камеры с OpenCv и Python на моем Ubuntu 10. OpenCv может соединиться с веб-камерой.
Но я получаю эту ошибку:
OpenCV Error: Null pointer (NULL array pointer is passed) in cvGetMat, file /build/buildd/opencv-2.1.0/src/cxcore/cxarray.cpp, line 2376
Traceback (most recent call last):
File "video.py", line 5, in <module>
cv.SaveImage("test.JPG", img)
cv.error: NULL array pointer is passed
2 ответа
Сэкономьте себе поездку в отделение неотложной помощи и используйте SimpleCV. Это оболочка Pythonic для привязки OpenCV к Python и еще несколько инструментов (в ней используются Numpy, Scipy и PIL):
from SimpleCV import *
camera = Camera()
image = camera.getImage()
image.save('test.JPG')
Я вижу эту ошибку снова и снова, снова и снова: CaptureFromCAM()
вызов не выполняется, что означает, что QueryFrame()
как следствие сбой и возвращает NULL как изображение, вызывая SaveImage()
потерпеть неудачу.
Здесь необходимо учитывать две вещи:
1) ваша веб-камера может не иметь индекс 0 (попробуйте -1 или 1) 2) научитесь безопасно кодировать! Всегда проверяйте возврат вызываемых функций. Эта практика сэкономит вам много времени в будущем:
capture = cv.CaptureFromCAM(0)
if not capture:
// deal with error, return, print a msg or something else.
img = cv.QueryFrame(capture)
if not img:
// deal with error again, return, print a msg or something else entirely.
cv.SaveImage("test.JPG", img)