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摄像头通信。

本人小白,
希望大神指点一二
...全文
13045 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大多采用此规范。可以从网上找一些例程试试看。
《SLAM导航机器人零基础实战系列》讲义 第1章:Linux基础 1.Linux简介 2.安装Linux发行版ubuntu系统 3.Linux命令行基础操作 第2章:ROS入门 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的service和client 7.理解tf的原理 8.理解roslaunch在大型项目中的作用 9.熟练使用rviz 10.在实际机器人上运行ROS高级功能预览 第3章:感知与大脑 1.ydlidar-x4激光雷达 2.带自校准九轴数据融合IMU惯性传感器 3.轮式里程计与运动控制 4.音响麦克风与摄像头 5.机器人大脑嵌入式主板性能对比 6.做一个能走路和对话的机器人 第4章:差分底盘设计 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标 第5章:树莓派3开发环境搭建 1.安装系统ubuntu_mate_16.04 2.安装ros-kinetic 3.装机后一些实用软件安装和系统设置 4.PC端与robot端ROS网络通信 5.Android手机端与robot端ROS网络通信 6.树莓派USB与tty串口号绑定 7.开机自启动ROS节点 第6章:SLAM建图与自主避障导航 1.在机器人上使用传感器 2.google-cartographer机器人SLAM建图 3.ros-navigation机器人自主避障导航 4.多目标点导航及任务调度 5.机器人巡航与现场监控 第7章:语音交互与自然语言处理 1.语音交互相关技术 2.机器人语音交互实现 3.自然语言处理云计算引擎
Exbot易科机器人实验维护书籍,提供学习镜像包括indigo和kinetic等,努力为ROS爱好者和开发人员提供力所能及的服务。, 本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。, 在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。, 当然,我们还会告诉你如何使用硬件,这样你可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。, 最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使用“Move it!”包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理。, 主要内容, 第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。, 第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试一个节点或利用可视化方法直观地查看通过主题发布的消息。, 第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。, 第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。, 第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。, 第6章将展示如何在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。, 第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。, 第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。, 第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。, 第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置,简单的运动规划等任务的演示示例。, 预备知识, 我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 12.04 LTS。这样你可以根据第1章的内容安装ROS Hydro。, 对于ROS的这一版本,你将需要Ubuntu 14.04之前的版本,因为之后的版本已经不再支持Hydro了。, 对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。, 你还需要Git(g

1,317

社区成员

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

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