Opencv和Python的问题

时间:2011-07-11 23:06:57

标签: python opencv

我是python和Opencv的新手,我尝试使用以下代码将图像从我的网络摄像头保存到计算机中:

import cv
if __name__=='__main__':
    pCapturedImage = cv.CaptureFromCAM(1)
    rospy.sleep(0.5)
        pSaveImg=cv.QueryFrame(pCapturedImage)
    cv.SaveImage("test.jpg", pSaveImg)

但是当我试图打开它时  我发现jpeg是空的。 有人可以帮忙吗? 此外,我尝试了一个程序来显示我的网络摄像头:

import cv
if __name__=='__main__':
    cv.NamedWindow("camera",1)
    capture=cv.CaptureFromCAM(0)
    while True:
        img=cv.QueryFrame(capture)
        cv.ShowImage("camera", img)
        if cv.WaitKey(10)==27:
        break
    cv.DestroyedWindow("camera")

但是当我运行它时,我得到一个只显示灰色屏幕的应用程序。 也有人可以帮忙吗? 感谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试过演示程序?他们展示了如何在许多其他事情中使用网络摄像头。

对于第一个问题,我不熟悉在opencv中使用相机,但我通过打开捕获(下面的代码中的capture.open(device_id))来使用它

这是一个工作的python示例(我使用较新的c ++接口:imreadimwriteVideoCapture等...您可以在列出的the OpenCV docs中找到它as" cv2"当它可用于python时。):

import cv2

capture = cv2.VideoCapture()  # this is the newer c++ interface
capture.open(0)  # Use your device id; I think this is what you are missing. 
image = capture.read()[1]
cv2.imwrite("test.jpg", image)

我的第二个样本也只是通过在捕获对象上使用open来工作:

import cv2

cv2.namedWindow("camera", 1)  # this is where you will put the video images
capture = cv2.VideoCapture()
capture.open(0)  # again, use your own device id
while True:
    img = capture.read()[1]
    cv2.imshow("camera", img)
    if cv2.waitKey(10) == 27:  # waiting for the esc key
        break
cv2.destroyWindow("camera")