3

我想制作一个程序,为数码视频/静态相机(数码单反相机以外的消费类相机)提供联机操作,这样您就可以将相机插入计算机(USB 或其他)并使用它的功能(拍照,录制视频、缩放、对焦等)。目前的预期平台是 Linux。

据我所知,除了少数厂商(佳能、奥林巴斯、尼康)之外,没有制造商为他们的产品提供 SDK,但只针对他们的数码单反相机。

我对 c++ 并不陌生,但我没有用它参与过很多项目。但是,我对 OpenCV 完全陌生,我还不知道这个库的功能。为了测试 opencv 构建和我的配置,我制作了一个简单的应用程序,它只从网络摄像头获取流并将其显示在表单上。(使用 cvCreateCameraCapture)

这适用于数码相机或摄像机吗?我猜他们必须有一个可用的“网络摄像头模式”,但这并不常见(至少在摄像机中没有)。火线怎么样,或者有其他支持高清的连接器吗?它们会被 OpenCV 识别吗?如果可能的话,我想远离 HDMI 和捕获设备(额外费用)。

所以我想我的问题是,如果有人对这样的项目有任何经验:这种用途的首选相机规格是什么(哪些功能)?是否有任何图书馆可以缓解我的麻烦:)

我也在研究 libgphoto2 。如果需要,我会尝试为相机编写驱动程序,如果可能的话使用 libusb,但老实说,我不知道从哪里开始。嗅探 USB 端口(使用他们的本地驱动程序),之后如何处理这些信息?

如果有人也能对这个主题有所了解,我将非常感激 - 如何开始,有什么好书可以推荐关于编写驱动程序软件?

另外,我知道 Linux Kino 提供了类似的功能,所以我可以查看源代码,但它仅适用于 IEEE 1394 吗?

最后一个问题,考虑到它是通过 USB 连接的,我如何实现相机在计算机启动时自动启动?

抱歉发了这么长的帖子,

谢谢你和最良好的祝愿!

马泰克

4

1 回答 1

3

要启动与 USB 连接设备对话的程序,您需要为其添加udev规则,如下所示。您可能希望使用ATTR{device}andATTR{vendor}而不是KERNEL如示例中所示。

至于相机本身,较旧的佳能 P&S 相机可以进行联机拍摄。有些受gphoto支持。如果您的相机没有 Linux 支持,但它能够在其他操作系统中工作,您将不得不逆向工程支持。是的,从提供的软件发出命令,嗅探 USB 端口,找出消息格式,让您的程序通过 libusb2 写入/读取消息(或者可能添加对 libgphoto2 的支持)。

另一种可能性是基于 Android 的相机(不是手机,而是真正的 P&S)。尼康和三星都制造了这些东西。可能不需要对任何东西进行逆向工程,但您可能需要为相机编写一个 Android 应用程序。有一些应用程序可以做到这一点,但通过 WiFi/3G 工作,所以 USB 也应该可以。

于 2012-12-18T11:40:27.080 回答