0

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

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

from SimpleCV import Camera


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

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

什么是正确的方法?谢谢!

4

4 回答 4

1

你安装了 PIL 吗?我遇到了类似的问题,但是在安装 PIL 时一切正常。希望这可以帮助。

您可以从Pythonware下载 PIL

于 2013-09-02T21:52:30.150 回答
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)
于 2014-10-13T20:55:55.327 回答
0

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

于 2013-11-02T05:07:10.583 回答
0

尝试
从 SimpleCV import Camera cam = Camera(0) while True: img = cam.getImage() img.show()

于 2015-05-02T17:32:29.997 回答