为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中的 gphoto2 与命令行;无法在 Python 中捕获预览

Python 中的 gphoto2 与命令行;无法在 Python 中捕获预览

慕侠2389804 2022-11-09 17:22:22
我以前使用过 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 中重现它。



查看完整回答
反对 回复 2022-11-09
?
繁星点点滴滴

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)。


查看完整回答
反对 回复 2022-11-09
  • 2 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信