Linux 通过 gphoto2 操作 Canon 450D

gphoto-logo

gPhoto2

摆弄450D有一段时间了,每次使用 Windows 自带的数码相机向导,把照片从相机导入到笔记本,接下来用 PhotoShop 进行 PS。直到今天,心血来潮,倒腾一下,把照片直接导入到 Debian 上,以下记录了这个过程,其中所遇到的问题和解决办法相信对自己今后或别人是个帮助。

首先,安装两个软件,基于命令行(command-line)的 gphoto2 和图形界面的 gtkaw。如果你是命令行的狂热粉丝,那么后者可以不安装,不会影响到任何操作。

在安装之前,先来了解下你将要使用使用的工具:

gPhoto2 is a free, redistributable, ready to use set of digital camera software applications for Unix-like systems, written by a whole team of dedicated volunteers around the world. It supports more than 1200 cameras

gPhoto2 runs on a large range of UNIX-like operating system, including Linux, FreeBSD, NetBSD, MacOS X, etc. gPhoto is provided by major Linux distributions like Debian GNU/Linux, Ubuntu, Gentoo, Fedora, openSUSE, Mandriva, etc.

— www.gphoto.org

eniac:~# apt-get install gphoto2 gtkaw

然后,连接好 Cannon 450D和笔记本,打开450D,执行命令,查看 gphoto2 是否识别到了450D:

xuhj@eniac:~/img/450D$ gphoto2 --auto-detect
 
Model                          Port
----------------------------------------------------------
Canon EOS 450D (PTP mode)      usb:
Canon EOS 450D (PTP mode)      usb:001,013

看来比较顺利,接下来查看450D都有哪些文件:

xuhj@eniac:~/img/450D$ gphoto2 -L
 
*** Error ***
An error occurred in the io-library ('Could not claim the USB device'): Could not claim interface 0 (Operation not permitted). Make sure no other program or kernel module (such as sdc2xx, stv680, spca50x) is using the device and you have read/write access to the device.
*** Error (-53: 'Could not claim the USB device') ***       
 
For debugging messages, please use the --debug option.
Debugging messages may help finding a solution to your problem.
If you intend to send any error or debug messages to the gphoto
developer mailing list , please run
gphoto2 as follows:
 
    env LANG=C gphoto2 --debug --debug-logfile=my-logfile.txt --list-files
 
Please make sure there is sufficient quoting around the arguments.

看样子遇到了大麻烦,还好从 gphoto2 的官网上了解到问题的原因

You have to make sure that no such kernel module is loaded and that you have set up the permissions on your USB device correctly, such that you have (non-root) write access to the camera device.

根据官方给出的建议,执行下面的命令:

eniac:~#/usr/lib/libgphoto2/print-camera-list 
    udev-rules version 0.98 group plugdev mode 0660 
    > /etc/udev/rules.d/90-libgphoto2.rules

完了以后,再来查看文件:

xuhj@eniac:~/img/450D$ gphoto2 -L
There is no file in folder '/'.
There is no file in folder '/store_00020001'.
There is no file in folder '/store_00020001/DCIM'.
There are 5 files in folder '/store_00020001/DCIM/100CANON'.
#1     IMG_3471.JPG               rd  1685 KB 3088x2056 image/jpeg
#2     IMG_3472.JPG               rd  1598 KB 3088x2056 image/jpeg
#3     IMG_3473.JPG               rd  1782 KB 3088x2056 image/jpeg
#4     IMG_3474.JPG               rd  1624 KB 3088x2056 image/jpeg
#5     IMG_3475.JPG               rd  1870 KB 3088x2056 image/jpeg
There is 1 file in folder '/store_00020001/MISC'.
#6     AUTXFER.MRK                r-     1 KB text/plain

哈,看来办法奏效了,接下来就是拷贝需要的文件到当前目录了:

xuhj@eniac:~/img/450D$ gphoto2 -p 1-5
Downloading 'IMG_3471.JPG' from folder '/store_00020001/DCIM/100CANON'...
Saving file as IMG_3471.JPG
Downloading 'IMG_3472.JPG' from folder '/store_00020001/DCIM/100CANON'...
Saving file as IMG_3472.JPG
Downloading 'IMG_3473.JPG' from folder '/store_00020001/DCIM/100CANON'...
Saving file as IMG_3473.JPG
Downloading 'IMG_3474.JPG' from folder '/store_00020001/DCIM/100CANON'...
Saving file as IMG_3474.JPG
Downloading 'IMG_3475.JPG' from folder '/store_00020001/DCIM/100CANON'...
Saving file as IMG_3475.JPG

Leave a comment

Your comment