Python opencv未接收到相机数据

3 投票
1 回答
1798 浏览
提问于 2025-04-17 02:24

我一直在尝试使用SimpleCV(www.simplecv.org)这个模块来进行图像识别和处理。可惜的是,我的摄像头视频信号有点不稳定,我也不太确定自己哪里出错了。我只是用了些基本的示例代码:

import cvwindow = cv.NamedWindow("camera", 1)
capture = cv.CreateCameraCapture(0)
width = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH)) 
height = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT))

while 1:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    k = cv.WaitKey(1)
    if(k == 102):
        cv.destroyWindow("camera")
        break

这段代码在我插上Logitech Webcam 500的时候运行得很好。不过,当我尝试使用Vimicro Altair摄像头时,屏幕变成了灰色,而且保存的文件是空的。

我还尝试过根据SimpleCV的食谱使用一些代码,像这样:

mycam = Camera()
img = mycam.getImage()

但同样没有成功,结果不是没有数据,而是返回了一张完全黑的图片。

我对造成这个问题感到很困惑,我在我的笔记本上用完全相同的系统,结果连Logitech摄像头的图像都没能获取到。我现在使用的是64位的Windows 7,Python 2.7和SimpleCV 1.1。

谢谢

1 个回答

6

我是SimpleCV的开发者之一。看起来你是在尝试使用标准的Python OpenCV封装。

我建议你直接运行这里的示例代码:

https://github.com/sightmachine/SimpleCV/blob/develop/SimpleCV/examples/display/simplecam.py

或者这里也有代码:

import time, webbrowser
from SimpleCV import *

#create JPEG streamers
js = JpegStreamer(8080)
cam = Camera()

cam.getImage().save(js)
webbrowser.open("http://localhost:8080", 2)

while (1):
  i = cam.getImage()
  i.save(js)
  time.sleep(0.01) #yield to the webserver

撰写回答