【问题标题】:SimpleCV webcam black imageSimpleCV 网络摄像头黑色图像
【发布时间】:2015-05-03 01:32:29
【问题描述】:

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

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

from SimpleCV import Camera


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

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

这样做的正确方法是什么?谢谢!

【问题讨论】:

    标签: python opencv webcam simplecv


    【解决方案1】:

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

    您可以从Pythonware下载PIL

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题并想出了以下解决方法。基本上它抓取图像,测试中间像素以查看它是否为黑色(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)
      

      【讨论】:

      • 这对我有用,而且有点道理——相机需要先启动。您知道为什么 simpleCV 包在尝试加载图像时会显示黑色画布吗?
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        试试这个
        从 SimpleCV 导入相机 凸轮=相机(0) 而真: img = cam.getImage() img.show()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多