我以前使用过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库之后,这(应该是等效的)失败:
import gphoto2 as gp
camera = 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上的最新版本相匹配
发布于 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)。
发布于 2020-05-07 15:58:18
看一下gphoto2程序的源代码。您也许能够找出--capture-preview
命令调用的libgphoto2函数的顺序。然后,您应该能够在Python中重现它。
https://stackoverflow.com/questions/61646223
复制相似问题