树莓派:使用IF循环检测相机,gphoto2
我正在寻找一种方法来检测是否找到了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')