首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python命令行中的gphoto2;无法捕获Python中的预览

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

Stack Overflow用户
提问于 2020-05-07 06:04:29
回答 2查看 1.2K关注 0票数 0

我以前使用过gphoto2 (2.5.20,在RPi上),并且能够从命令行执行基本操作:

/usr/bin/gphoto2 --force image-and-download --filename=zzz.jpg --force-overwrite

/usr/bin/gphoto2 --捕获-预览--filename=zzz.jpg --force-overwrite

后者捕获预览图像,它要小得多,对于某些应用程序来说,这是很棒的;你基本上可以用单反相机制作一个网络摄像头。

然而,在安装python的gphoto2库之后,这(应该是等效的)失败:

代码语言:javascript
运行
复制
import gphoto2 as gp
camera = gp.Camera()
camera.init()
file_path = camera.capture(gp.GP_OPERATION_CAPTURE_PREVIEW)

并显示消息"gphoto2.GPhoto2Error:-6不支持的操作“

如果你选择

代码语言:javascript
运行
复制
file_path = camera.capture(gp.GP_CAPTURE_IMAGE)

然而,这是可行的。为什么我们可能会从命令行得到一个工作预览,而不是在Python版本中?

gp.__version__返回2.2.2,并与https://github.com/jim-easterbrook/python-gphoto2上的最新版本相匹配

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-07 23:34:24

我深入研究了libgphoto2源代码。我的相机属于PTP的范畴;我相信它在camlibs/ptp2/library.c中,camera_capture_preview函数就在这里。使用尼康和索尼时,Python代码都会失败。代码中似乎确实有两件事指出了可能的问题;在Nikon部分,它将尝试20次以获得预览;在Sony部分,有关于时间的注释。但是,命令行可以工作,因此问题可能并不存在。

我还研究了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上有效;在Ubuntu16.04LTS系统上,这是失败的(gphoto2是2.5.9)。

票数 0
EN

Stack Overflow用户

发布于 2020-05-07 15:58:18

看一下gphoto2程序的源代码。您也许能够找出--capture-preview命令调用的libgphoto2函数的顺序。然后,您应该能够在Python中重现它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61646223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档