SimpleCV网络摄像头黑色图像

时间:2013-06-14 13:08:28

标签: python opencv webcam simplecv

我需要从网络摄像头拍摄一张快照。我选择SimpleCV来完成这项任务。

现在我尝试获取单个图像并显示它:

from SimpleCV import Camera


cam = Camera()
img = cam.getImage()
img.show()

但我只看到黑色图像。我认为此时相机还没有准备就绪,因为如果我在time.sleep(10)之前拨打cam.getImage(),那么一切正常。

这是正确的方法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

你安装了PIL吗?我有类似的问题,但在安装PIL一切正常。希望这会有所帮助。

您可以从Pythonware

下载PIL

答案 1 :(得分:1)

我遇到了同样的问题,并提出了以下解决方法。基本上它抓取图像,测试中间像素以查看它是否为黑色(0,0,0)。如果是,则等待1秒钟再试一次。

import time
from SimpleCV import Camera
cam = Camera()
r = g = b = 0
while r + g + b < 0.01:
    img = cam.getImage()
    r, g, b = img[img.width/2, img.height/2]
    print("r: {} g: {} b: {}".format(r,g,b))
    time.sleep(1)
img.save(file_name)

答案 2 :(得分:0)

您的问题可能是,当脚本结束时,相机对象似乎不会释放其他程序的网络摄像头。当您等待运行脚本时,Windows将其释放(可能?),以便它可以再次运行。如果您使用它,旧脚本仍然认为它拥有网络摄像头,它显示为黑色。无论如何,解决方案here似乎有效。将“del cam”添加到脚本的末尾,这将使相机对象消失,让您再次使用相机。