ubuntu 下 如何与usb设备摄像头通信

qq_278667286 2017-11-12 05:22:39
某宝上双目摄像头


window ubuntu 都能自动识别。
打开摄像头默认左摄像头的图像。
windows使用CHUSEI 3D Webcam可以实现调用左右 红蓝双目图像。
测试


经测试,chusei 3d webcam软件的left、right 、红蓝、双目按钮点击是给usb设备下发了命令。

A_W c376 0001
A_W c376 0002
A_W c376 0003
A_W c376 0004
似乎是往某个寄存器(c376)里写了不同的数值(1234),触发摄像头传相应的图像。

软件配置文件如下
;Device address:
;Format: X_Y ADDR DATA
;X(Source): Sw=SENSOR Word Sb=SENSOR BYTE,E=EEPROM,A=ASIC Md=MCUdata Mc=MCUcode O=OTP
;Y(R/W): R=READ,W=WRITE
A_W c376 0004

如果能写个程序,实现chusei 3d webcam按钮的动作,那么这个双目还是有点利用价值的,特别是ros中的应用。
不知ubuntu 如何与usb摄像头通信。

本人小白,
希望大神指点一二
...全文
13483 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartlifuchang 2020-03-26
  • 打赏
  • 举报
回复
您好,我也是这种摄像头,想请教一下您,我已经用那个软件chuise 3d 调好了摄像头但是用Python调用摄像头只能有一个画面,应该怎么解决问题?
wb197 2019-08-12
  • 打赏
  • 举报
回复
我用的这款https://item.jd.com/50082528786.html#crumb-wrap

无需装驱动,我在ubuntu16.04下用的python代码:


import cv2
import time
import camConfigs

#双目摄像头支持的分辨率
#MJPEG:
#640*240@60FPS
#1280*480@60FPS

camWidth = 1280
camHeight = 480

AUTO = False # 自动拍照,或手动按s键拍照
INTERVAL = 2 # 自动拍照间隔

cv2.namedWindow("stereo")
cv2.moveWindow("stereo", 400, 200)
stereo_cam = cv2.VideoCapture(1) # 笔记本原配一个usb cam,不可插拔,再接这个双目摄像头id就+1了
stereo_cam.set(cv2.CAP_PROP_FRAME_WIDTH,camWidth) # width
stereo_cam.set(cv2.CAP_PROP_FRAME_HEIGHT,camHeight) # height

counter = 0
utc = time.time()
folder = "./snapshot/" # 拍照文件目录

def shot(pos, frame):

global counter
path = folder + pos + "_" + str(counter) + ".jpg"
cv2.imwrite(path, frame)

print("snapshot saved into: " + path)

while True:
height = camHeight
ret, stereo_frame = stereo_cam.read()
assert ret

width = camWidth

leftFrame = stereo_frame[0:height,0:width/2]
rightFrame = stereo_frame[0:height,width/2:width]

cv2.imshow("stereo", stereo_frame)
cv2.imshow("left", leftFrame)
cv2.imshow("right", rightFrame)

now = time.time()
if AUTO and now - utc >= INTERVAL:
shot("stereoCam", stereo_frame)
counter += 1
utc = now

key = cv2.waitKey(1)
if key == ord("q"):
break
elif key == ord("s"):
shot("stereoCam", stereo_frame)
shot("left", leftFrame)
shot("right", rightFrame)
counter += 1

stereo_cam.release()
cv2.destroyWindow("stereo")
qq_278667286 2019-06-11
  • 打赏
  • 举报
回复
谢谢各位的帮助和探讨!
linux使用此双目依赖uvcdynctrl所以安装之

sudo apt install uvcdynctrl



uvcdynctrl命令写成shell脚本来实现四个模式的切换


uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x50ff'
uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x00f6'
uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x2500'
uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x5ffe'
uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0003'
uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0002'
uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0012'
uvcdynctrl -d /dev/video0 -S 6:15 '(LE)0x0004'
uvcdynctrl -d /dev/video0 -S 6:8 '(LE)0x76c3'
uvcdynctrl -d /dev/video0 -S 6:10 '(LE)0x0400'
最后一行中用0x0100,0x0200,0x0300,0x0400指令分别可以切换到左单目,右单目,红蓝模式,双目模式。


python是这样的
cam_id=1
cam_mode_dict={
'LEFT_EYE_MODE':1,
'RIGHT_EYE_MODE':2,
'RED_BLUE_MODE':3,
'BINOCULAR_MODE':4,
}
cam_mode=cam_mode_dict['BINOCULAR_MODE']
command_list=[
"uvcdynctrl -d /dev/video{cam_id} -S 6:8 '(LE)0x50ff'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:15 '(LE)0x50f6'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:8 '(LE)0x2500'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:8 '(LE)0x5ffe'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:15 '(LE)0x0003'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:15 '(LE)0x0002'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:15 '(LE)0x0012'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:15 '(LE)0x0004'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:8 '(LE)0x76c3'",
"uvcdynctrl -d /dev/video{cam_id} -S 6:10 '(LE)0x0{cam_mode}00'",

]

for command in command_list:
subprocess.Popen(shlex.split(command.format(cam_id=cam_id,cam_mode=cam_mode)))

总结记录
https://blog.csdn.net/qq_38288618/article/details/91474026
JT同学 2019-06-04
  • 打赏
  • 举报
回复
一般都是有支持的驱动的,插上摄像头就能用,想读取摄像头数据就需要编写应用程序,可以参考:https://blog.csdn.net/weixin_42462202/article/details/88957514
黄地主 2019-03-01
  • 打赏
  • 举报
回复
想知道淘宝上的那个人是怎么实现用OPENCV显示出两个摄像头的画面的
qq_40745500 2018-09-01
  • 打赏
  • 举报
回复
最近我也搞过同样的双目摄像头,在某宝买家评论里看到有人在Windows上用opencv编程实现了左右镜头画面同时显示,看样子也是发指令4给摄像头,但看不到具体代码。不过我在Ubuntu16.04下用opencv + libusb无法做到,因为调用libusb的libusb_detach_kernel_driver方法后,摄像头所对应的设备文件/dev/video1消失了。只好再花170大元买另一种双目摄像头,不用设置就能输出双目画面。
qq_278667286 2018-01-12
  • 打赏
  • 举报
回复
引用 3 楼 caii123的回复:
正在玩这个,这个用的uvc免驱,不过特殊功能用了专门的index和interface,网上有些关于这个的资料,你可以用bus hound抓包看软件是怎么控制摄像头的,然后模拟这个控制过程。 楼主有那个chusei 3D webcam能麻烦给我发一份吗? 289548146@qq.com
已发12345678
caii123 2018-01-04
  • 打赏
  • 举报
回复
正在玩这个,这个用的uvc免驱,不过特殊功能用了专门的index和interface,网上有些关于这个的资料,你可以用bus hound抓包看软件是怎么控制摄像头的,然后模拟这个控制过程。 楼主有那个chusei 3D webcam能麻烦给我发一份吗? 289548146@qq.com
常书 2017-11-15
  • 打赏
  • 举报
回复
建议找原厂支持,自己研究比较费劲 你可以到DEV下看看有没多出来tty结点,可能会USB转串口通信,如果是这样好操作些,往这个串口发命令
Hello Worm 2017-11-14
  • 打赏
  • 举报
回复
你可以查询一下V4L2规范,这个规范定义了如何采集,设置,控制视频类设备,常见如摄像头,广播Tuner大多采用此规范。可以从网上找一些例程试试看。
代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...

1,323

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧