树莓派:使用IF循环检测相机,gphoto2

3 投票
1 回答
2441 浏览
提问于 2025-04-17 20:14

我正在寻找一种方法来检测是否找到了gphoto2的相机。

我在gphoto2的论坛上发过帖子,但我想在这里也试试。可以使用命令gphoto2 --auto-detect,这样它会列出检测到的相机。

我正在运行一个比较大的Python脚本,其中有一个环节会调用gphoto2来拍照并下载图片。我想找到一个可以放在IF循环中的语句,这样只有在检测到相机后,才会执行拍照和下载图片的命令。

1 个回答

1

快速搜索一下可以发现,Python有一个可以和gphoto2配合使用的库,具体可以参考这个链接:http://magiclantern.wikia.com/wiki/Remote_control_with_PTP_and_Python

另一种方法是调用一个控制台命令,也就是:

from subprocess import call
call(["gphoto2", "--auto-detect"])

你可以自己决定在放弃之前,等待相机被检测到的时间有多长。

如果你选择使用循环,记得在里面加一些暂停的命令。

timeout = time.time() + 60
detected = False
while time.time() < timeout:
    if is_device_available():
        detected = True
        break
    # maybe show some feedback why he has to wait
    time.sleep(1)
if not detected:
    raise Exception('Camera device not detected')

撰写回答