我需要从网络摄像头拍摄一张快照。我选择SimpleCV来完成这项任务。
现在我尝试获取单个图像并显示它:
from SimpleCV import Camera
cam = Camera()
img = cam.getImage()
img.show()
但我只看到黑色图像。我认为此时相机还没有准备就绪,因为如果我在time.sleep(10)
之前拨打cam.getImage()
,那么一切正常。
这是正确的方法吗?谢谢!
答案 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”添加到脚本的末尾,这将使相机对象消失,让您再次使用相机。