Ошибка при попытке сохранить изображение с веб-камеры в 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)
Другие вопросы по тегам