Linux C++中的 UVC Camera "Still Pin" 捕获
UVC Camera "Still Pin" capture in Linux C++
我这里有一个USB相机,我非常熟悉,并且已经使用了一段时间。我可以在OpenCV和Gstreamer中捕获"静止图像",而不会出现问题。然而,这款相机的一个使用案例涉及相机本身的一个按钮来捕捉剧照。
相机有一个"静态引脚",我已经连接了一个按钮。在带有DirectShow的Windows中,它的工作原理正如你所期望的那样。在过去的一周里,我一直在为我的嵌入式项目寻找一种在Linux中复制这种行为的方法。到目前为止,我还没能找到任何可以利用的东西。似乎所有对该功能的支持都仅限于Windows。
我搜索了以下内容:V4l2文档OpenCVGstreameruvc拖缆悬雍垂luvcview
我还在Windows上进行了USB嗅探,发现发送了一个"捕获开始"数据包。虽然我还没有找到一种方法,我可以在流媒体播放过程中监控摄像头的USB流量。从设备捕获时,V4l2正在使用/dev/video0,我无法读取在总线上传输的字节。如果有一种方法可以从相机中读取原始数据,我也可以在应用程序中处理"静止"按钮。
目前欢迎任何可能的解决方案/想法。我的想法和网络资源都用完了。
因此,事实证明,在linux中有一种方法可以看到"still pin"按钮按下!
按下按钮显示为事件。使用libevdev之类的东西,我可以在代码中使用它。这个答案主要在这里找到:
可以';t从/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中保存静态图像,所以我知道必须支持这种类型的东西。
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 当类定义不可见时捕获异常
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 在 lambda 捕获中声明的变量的类型推导
- RtlCaptureStackBackTrace未捕获任何帧
- 如何在Qt中取消捕获字符串
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- 如何将strftime中的格式错误作为异常捕获
- 在Linux下捕获SIGKILL的C++程序
- 按值捕获引用时出现非常量
- 捕获lambda中的std::数组
- 由cin中的字符串中未捕获空白引起的分割错误
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- Linux C++中的 UVC Camera "Still Pin" 捕获
- 网络摄像头"still pin"捕获