我在这里有一台USB相机,我非常熟悉并且已经使用了一段时间。我可以拍摄"静止图像"在OpenCV和Gstreamer没有问题。然而,这款相机的一个使用案例涉及相机本身的按钮以捕捉静止图像。
相机有一个"静止的针脚"我已经连接了一个按钮。在使用DirectShow的Windows中,它可以像您期望的那样工作。过去一周,我一直在寻找一种方法来在Linux中为我的嵌入式项目复制这种行为。到目前为止,我还没有找到任何我可以利用的东西。似乎所有对此功能的支持仅限Windows。
我搜索了以下内容: V4l2文档 OpenCV的 的Gstreamer UVC-流光 uvccapture luvcview的
我还在Windows上进行了USB嗅探,它显示了一个"捕获开始"数据包已发送。虽然我没有找到一种方法可以在流媒体中监控来自摄像头的USB流量。从设备捕获时,V4l2正在使用/ dev / video0,我无法读取总线上传输的字节。如果有一种方法我可以从相机读取原始数据,我也可以只处理一个"仍然是pin"按下按钮在我的应用程序中。
目前欢迎任何可能的解决方案/想法。我缺乏想法和网络资源。
答案 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中保存静止图像,所以我知道对这种类型的东西必须有支持。