UVC 相机 "Still Pin" 在 Linux C++ 中捕获
UVC Camera "Still Pin" capture in Linux C++
我这里有一个USB摄像头,我非常熟悉并且已经使用了一段时间。我可以在 OpenCV 和 Gstreamer 中毫无问题地捕获 "still images"。然而,此相机的一个用例涉及相机本身的一个按钮,用于拍摄静止图像。
相机有一个 "still pin",我已经连接了一个按钮。在使用 DirectShow 的 Windows 中,它的工作方式与您预期的一样。过去一周我一直在寻找一种方法来为我的嵌入式项目在 Linux 中复制这种行为。到目前为止,我还没有找到任何我可以利用的东西。似乎所有对此功能的支持都只有 Windows。
我搜索了以下内容:
V4l2 文档
打开简历
流星
uvc流光
紫外线捕捉
luvcview
我还在 Windows 上进行了 USB 嗅探,结果显示发送了一个 "capture begin" 数据包。虽然我还没有找到一种方法可以在流式传输期间监控来自相机的 USB 流量。从设备捕获时,/dev/video0 正在被 V4l2 使用,我无法读取总线上传输的字节。如果有办法从相机读取原始数据,我也可以在我的应用程序中处理 "still pin" 按钮按下。
此时欢迎任何可能的solutions/ideas。我没有想法和网络资源。
原来有一种方法可以在 linux 中看到按下 "still pin" 按钮!
按下按钮显示为一个事件。使用诸如 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
如您所见,按钮 press/release 对系统清晰可见。我希望这对其他人的搜索有所帮助。
我想我还应该提到按下按钮会在 guvcviewer 中保存静止图像,所以我知道必须支持此类操作。
我这里有一个USB摄像头,我非常熟悉并且已经使用了一段时间。我可以在 OpenCV 和 Gstreamer 中毫无问题地捕获 "still images"。然而,此相机的一个用例涉及相机本身的一个按钮,用于拍摄静止图像。
相机有一个 "still pin",我已经连接了一个按钮。在使用 DirectShow 的 Windows 中,它的工作方式与您预期的一样。过去一周我一直在寻找一种方法来为我的嵌入式项目在 Linux 中复制这种行为。到目前为止,我还没有找到任何我可以利用的东西。似乎所有对此功能的支持都只有 Windows。
我搜索了以下内容: V4l2 文档 打开简历 流星 uvc流光 紫外线捕捉 luvcview
我还在 Windows 上进行了 USB 嗅探,结果显示发送了一个 "capture begin" 数据包。虽然我还没有找到一种方法可以在流式传输期间监控来自相机的 USB 流量。从设备捕获时,/dev/video0 正在被 V4l2 使用,我无法读取总线上传输的字节。如果有办法从相机读取原始数据,我也可以在我的应用程序中处理 "still pin" 按钮按下。
此时欢迎任何可能的solutions/ideas。我没有想法和网络资源。
原来有一种方法可以在 linux 中看到按下 "still pin" 按钮!
按下按钮显示为一个事件。使用诸如 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
如您所见,按钮 press/release 对系统清晰可见。我希望这对其他人的搜索有所帮助。
我想我还应该提到按下按钮会在 guvcviewer 中保存静止图像,所以我知道必须支持此类操作。