c++ - 使用 C++ 在 Linux 中使用系留相机应用程序

标签 c++ opencv camera linux-device-driver tethering

<分区>

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

据我所知,除了少数制造商(佳能、奥林巴斯、尼康)之外,没有一家制造商为其产品提供 SDK,但仅限于他们的 DSLR。

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

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

So i guess my question is, if anyone had any experience with a project like this: what would be the preferred camera specifications for such usage (what features)? And are there any libraries available to ease my troubles :)

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

I would be very grateful if someone could shed some light on that subject as well - how to get started, any good books to recommend on writing driver software?

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

One last question, how could I achieve that the camera starts up automatically on computer start up, given that it's connected through USB?

抱歉发了这么长的帖子,

谢谢你,祝你好运!

马特克

最佳答案

要启动与 USB 连接设备通信的程序,您可以为其添加 udev 规则,例如 this .您可能希望使用 ATTR{device}ATTR{vendor} 而不是示例中所示的 KERNEL

至于相机本身,older Canon P&S cameras可以做tethered shooting .一些由 gphoto 支持.如果你的相机没有 Linux 支持,但它可以在其他操作系统上工作,你将不得不逆向工程支持。是的,从提供的软件发出命令,嗅探 USB 端口,找出消息格式,让您的程序通过 libusb2 写入/读取消息(或者可能添加对 libgphoto2 的支持)。

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

关于c++ - 使用 C++ 在 Linux 中使用系留相机应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931271/

相关文章:

c++ - OpenCV 将视频保存到文件

android - Ionic-在 Android 中从相机或画廊上传图片

c++ - 存储指向静态变量的指针

c++ - Qt 5.2 - 如何将文本链接添加到 UI 中

c++ - 未命名对象和临时对象是否等同?

c++ - 找不到 Mexopencv mex 文件

安卓 NDK : How to replace AAsset to work with files from external Storage for FFmpeg decoding

image - 如何在openCV中访问或检测对象的长度?

iphone - 增强现实护目镜 iPhone

java - 安卓模拟相机