UVC相机" Still Pin"在Linux C ++中捕获

时间:2015-03-30 19:55:36

标签: c++ linux opencv camera directshow

我在这里有一台USB相机,我非常熟悉并且已经使用了一段时间。我可以拍摄"静止图像"在OpenCV和Gstreamer没有问题。然而,这款相机的一个使用案例涉及相机本身的按钮以捕捉静止图像。

相机有一个"静止的针脚"我已经连接了一个按钮。在使用DirectShow的Windows中,它可以像您期望的那样工作。过去一周,我一直在寻找一种方法来在Linux中为我的嵌入式项目复制这种行为。到目前为止,我还没有找到任何我可以利用的东西。似乎所有对此功能的支持仅限Windows。

我搜索了以下内容: V4l2文档 OpenCV的 的Gstreamer UVC-流光 uvccapture luvcview的

我还在Windows上进行了USB嗅探,它显示了一个"捕获开始"数据包已发送。虽然我没有找到一种方法可以在流媒体中监控来自摄像头的USB流量。从设备捕获时,V4l2正在使用/ dev / video0,我无法读取总线上传输的字节。如果有一种方法我可以从相机读取原始数据,我也可以只处理一个"仍然是pin"按下按钮在我的应用程序中。

目前欢迎任何可能的解决方案/想法。我缺乏想法和网络资源。

1 个答案:

答案 0 :(得分:1)

事实证明,有一种方法可以看到一个"仍然是#34;按下按钮在linux!

按钮按下显示为平均值。使用像libevdev这样的东西,我可以在我的代码中使用它。这个答案主要在这里找到:

can't get the mouse move event from /dev/input/event*

以下是相机按钮的示例输出:

# input-events 15
/dev/input/event15
   bustype : BUS_USB
   vendor  : 0xc45
   product : 0x62c0
   version : 256
   name    : "Celestron Digital Microscope"
   phys    : "usb-0000:00:14.0-1/button"
   bits ev : EV_SYN EV_KEY

waiting for events
08:34:01.980650: EV_KEY KEY_CAMERA (0xd4) pressed
08:34:01.980650: EV_SYN code=0 value=0
08:34:02.180637: EV_KEY KEY_CAMERA (0xd4) released
08:34:02.180637: EV_SYN code=0 value=0
08:34:02.580673: EV_KEY KEY_CAMERA (0xd4) pressed
08:34:02.580673: EV_SYN code=0 value=0
08:34:02.680676: EV_KEY KEY_CAMERA (0xd4) released
08:34:02.680676: EV_SYN code=0 value=0
08:34:03.580618: EV_KEY KEY_CAMERA (0xd4) pressed
08:34:03.580618: EV_SYN code=0 value=0
08:34:03.780657: EV_KEY KEY_CAMERA (0xd4) released
08:34:03.780657: EV_SYN code=0 value=0
08:34:04.280631: EV_KEY KEY_CAMERA (0xd4) pressed
08:34:04.280631: EV_SYN code=0 value=0
08:34:04.580679: EV_KEY KEY_CAMERA (0xd4) released
08:34:04.580679: EV_SYN code=0 value=0
08:34:05.080636: EV_KEY KEY_CAMERA (0xd4) pressed
08:34:05.080636: EV_SYN code=0 value=0
08:34:05.380704: EV_KEY KEY_CAMERA (0xd4) released
08:34:05.380704: EV_SYN code=0 value=0

如您所见,按钮按下/释放对系统清晰可见。我希望这可以帮助其他人搜索。

我想我还应该提一下,按下按钮可以在guvcviewer中保存静止图像,所以我知道对这种类型的东西必须有支持。