我以前使用过 gphoto2(2.5.20,在 RPi 上),并且能够从命令行完成基础操作:/usr/bin/gphoto2 --capture-image-and-download --filename=zzz.jpg --force-overwrite/usr/bin/gphoto2 --capture-preview --filename=zzz.jpg --force-overwrite后者捕获的预览图像要小得多,并且对于某些应用程序来说很棒;您基本上可以用数码单反相机制作网络摄像头。但是,在为 python 安装 gphoto2 库之后,这(应该是等效的)失败:import gphoto2 as gpcamera = gp.Camera()camera.init()file_path = camera.capture(gp.GP_OPERATION_CAPTURE_PREVIEW)带有消息“gphoto2.GPhoto2Error:[-6] 不支持的操作”如果你选择file_path = camera.capture(gp.GP_CAPTURE_IMAGE)但是,这行得通。为什么我们可以从命令行而不是 Python 版本中获得工作预览的任何原因?gp.__version__返回 2.2.2 ,并匹配https://github.com/jim-easterbrook/python-gphoto2上的最新版本
2 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
看看 gphoto2 程序源。您可能能够找出--capture-preview
命令调用的 libgphoto2 函数的序列。然后,您应该能够在 Python 中重现它。
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
我深入研究了 libgphoto2 源代码。我拥有的相机属于 PTP 世界;我相信这是在camlibs/ptp2/library.c 中,camera_capture_preview 函数所在的位置。尼康和索尼的 Python 代码都失败了。代码中似乎确实有两件事指出了可能的问题;在尼康部分,它会尝试20次以获得预览;在索尼部分,有关于时间的评论。但是,命令行有效,因此问题可能不存在。
我也查看了 Python 中的 gphoto2 实现。好消息是https://github.com/jim-easterbrook/python-gphoto2/blob/master/examples/preview-image.py的代码可以工作,所以如果有人想用 Python 做这个,他们可以替换这
file_path = camera.capture(gp.GP_OPERATION_CAPTURE_PREVIEW) 行
与那里的代码。
请注意,这适用于带有 gphoto2 (2.5.20) 的 rPi;在 Ubuntu 16.04 LTS 系统上,此操作失败(gphoto2 为 2.5.9)。
添加回答
举报
0/150
提交
取消