从Webcam捕获图像在Windows上使用Python

时间:2016-07-21 07:38:49

标签: python image save webcam capture

我现在使用的代码是: -

from VideoCapture import Device
cam = Device()
cam.saveSnapshot('image.jpg')

使用py 2.7 并导入了pygame以及所有和视频捕获 我在pycharm中收到此错误: -

C:\Python27\python.exe F:/Xtraz/Orion/Key-Logger.py
Traceback (most recent call last):
  File "F:/Xtraz/Orion/Key-Logger.py", line 3, in <module>
    cam.saveSnapshot('image.jpg')
  File "C:\Python27\lib\VideoCapture.py", line 200, in saveSnapshot
    self.getImage(timestamp, boldfont, textpos).save(filename, **keywords)
  File "C:\Python27\lib\VideoCapture.py", line 138, in getImage
    im = Image.fromstring('RGB', (width, height), buffer, 'raw', 'BGR', 0, -1)
  File "C:\Users\admin\AppData\Roaming\Python\Python27\site-packages\PIL\Image.py", line 2080, in fromstring
    "Please call frombytes() instead.")
NotImplementedError: fromstring() has been removed. Please call frombytes() instead.

Process finished with exit code 1

网络摄像头LED指示灯亮起,然后立即关闭。 或帮助我使用任何其他代码和库,只适用于Windows上的py 2.7和pycharm!我只是想保存图像,而不是显示它!

1 个答案:

答案 0 :(得分:1)

你可能想要降级你的PIL版本,似乎VideoCapture暂时没有更新,仍然依赖于过时版本的PIL。

PIL 2.x似乎有一个有效的fromstring方法:https://github.com/python-pillow/Pillow/blob/2.9.0/PIL/Image.py#L750

否则,您可以尝试将VideoCapture.py中的第138行从im = Image.fromstring(...)更改为im = Image.frombytes(...);希望它是阻止它工作的唯一因素。

解决方案#1:降级PIL

如果您使用的是pip,则可以使用pip uninstall Pillow卸载当前版本,然后使用pip install Pillow==2.9.0安装较旧的版本(Pillow是PIL的分支,PIL基本上死了。)

解决方案#2:更新VideoCatpure

打开文件C:\Python27\lib\VideoCapture.py并转到第138行。您应该有类似的内容:

im = Image.fromstring('RGB', (width, height), buffer, 'raw', 'BGR', 0, -1)

将此行替换为:

im = Image.frombytes('RGB', (width, height), buffer, 'raw', 'BGR', 0, -1)