2012-01-18 71 views
1
import cv 

capture = cv.CaptureFromCAM(0) 
img = cv.QueryFrame(capture) 
cv.SaveImage("test.JPG", img) 

嗨, 我只是想保存在我的Ubuntu 10 的OpenCV从我用的OpenCV和Python摄像头拍照可以与摄像头连接。错误,而试图挽救摄像头画面与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 

回答

4

保存自己去一趟急诊室,并使用SimpleCV。这是一个Python的包装器的OpenCV的Python绑定以及一些新的工具(它使用与NumPy,SciPy的和PIL):

from SimpleCV import * 

camera = Camera() 
image = camera.getImage() 

image.save('test.JPG') 
3

我一遍又一遍又一遍地再次看到这个错误:在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)