我以前使用過 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 系統上,此操作失?。╣photo2 為 2.5.9)。
添加回答
舉報
0/150
提交
取消