我需要从网络摄像头拍摄一张快照。我选择 SimpleCV 来完成这项任务。
现在我尝试获取单个图像并显示它:
from SimpleCV import Camera
cam = Camera()
img = cam.getImage()
img.show()
但我只看到黑色图像。我认为此时相机还没有准备好,因为如果我在一切正常time.sleep(10)
之前打电话。cam.getImage()
什么是正确的方法?谢谢!
你安装了 PIL 吗?我遇到了类似的问题,但是在安装 PIL 时一切正常。希望这可以帮助。
您可以从Pythonware下载 PIL
我遇到了同样的问题并提出了以下解决方法。基本上它抓取图像,测试中间像素以查看它是否为黑色(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)
您的问题可能是当脚本结束时,相机对象似乎没有为其他程序释放网络摄像头。当您等待运行脚本时,Windows 会释放它(也许?),所以它会再次工作。如果你使用它,旧脚本仍然认为它拥有网络摄像头,它会显示为黑色。无论如何,这里的解决方案似乎有效。在脚本末尾添加“del cam”,这将使相机对象消失并让您再次使用相机。
尝试
从 SimpleCV import Camera cam = Camera(0) while True: img = cam.getImage() img.show()