ubuntu调用外接摄像头

2023-12-18 11:50
文章标签 ubuntu 摄像头 调用 外接

本文主要是介绍ubuntu调用外接摄像头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、ubuntu20.04调用外接摄像头(如果是Ubuntu18.04用melodic放在第二行)

1.检查是否连接摄像头

ls /dev/video*

输出/dev/video0  /dev/video1  /dev/video2  /dev/video3 ...表示可以

2.命令行下载软件调用USB摄像头

2.1使用应用程序camorama

输入命令:

sudo apt-get install camorama

安装完成后,在终端中输入命令:

camorama

即可显示出视频信息;

(如果指定打开video2,输入命令:camorama -d /dev/video2)

2.2 使用应用程序茄子(cheese)

输入命令:

sudo apt-get install cheese

(如果指定打开video1,输入命令:cheese -d /dev/video1)

装好后,用命令:

cheese

cheese的页面如下:

3.在yolov5上调用外接摄像头

通过第二步一直调试调用video0-3,你应该知道哪个video是外接摄像头了

那只需在调用yolov5的detect.py时给定--source='2'这个参数。其中要注意的是这个'2'是一个字符串,且这个2代表的就是外接摄像头的序号。

最终调用yolov5的检测函数的命令行应该是这样的:

python detect.py --weights runs/train/exp/weights/best.pt --save-txt --source='2'

其中的--weights和--save-txt不必与文中相同

二、使用ROS的ros-noetic-usb-cam调用相机

1 ros-noetic-usb-cam使ROS的官方示例程序之一,用于启动摄像头,获取图像,并显示在屏幕上。这里记录ros-noetic-usb-cam的安装、接口调试和使用方法。

ros-noetic-usb-cam的安装流程
ros-noetic-usb-cam的安装包括两种,第一种是使用Ubuntu的apt-get安装:

(如果是Ubuntu18.04用melodic放在第二行)

sudo apt-get install ros-noetic-usb-cam
sudo apt-get install ros-melodic-usb-cam

其中,"ros-noetic-usb-cam"中的"noetic"与用户当前的Ubuntu20.04版本相匹配

ros-noetic-usb-cam的接口调试方法
考虑ros-noetic-usb-cam默认调用的摄像机接口为/dev/video0,与RealSense的接口编号不一致,若直接运行ros-noetic-usb-cam,将无法启动RealSense的摄像机。接口的修改方法可参考(https://blog.csdn.net/benchuspx/article/details/108765979):

第一步,进入ros-noetic-usb-cam的源代码位置:

roscd usb_cam



第二步,打开文件

vim launch/usb_cam-test.launch



第三步,调整接口参数

<param name="video_device" value="/dev/video2" />  

其中,接口号为video2,若运行,则调用RealSense的黑白相机。也可以调整为其它,若运行,则调用RGB相机。

ros-noetic-usb-cam的运行方法
打开终端,运行命令如下,

roslaunch usb_cam usb_cam-test.launch 

2 使用Python和OpenCV调用相机
OpenCV是常用的计算机视觉库和机器学习库,本工作使用OpenCV打开和处理RealSense的相机数据,编程语言选择Python 启动相机的代码如下,

import cv2
import numpycap = cv2.VideoCapture(4) #调整参数实现读取视频或调用摄像头while cap.isOpened():ret, frame = cap.read()cv2.imshow("cap", frame)if cv2.waitKey(1) & 0xff == ord('q'):breakcap.release()
cv2.destroyAllWindows()


3 在ROS下使用RVIZ调用Realsense相机
在ROS下启动RealSense

工作中准备两个终端,分别执行ROS的RealSense和RVIZ。

其中,第一个终端运行RealSense 命令如下:

roslaunch realsense2_camera rs_camera.launch

第二个终端运行RVIZ命令如下:

rviz

接着在RVIZ界面中,增加RGB相机和深度相机


参考文章:https://blog.csdn.net/qq_32454557/article/details/112692201

参考文章:https://blog.csdn.net/weixin_48250354/article/details/109309042

这篇关于ubuntu调用外接摄像头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508284

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

在Ubuntu 20.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和流量最高的网站。它是一个轻量级选择,可以用作 Web 服务器或反向代理。 在本指南中,我们将讨论如何在 Ubuntu 20.04 服务器上安装 Nginx,调整防火墙,管理 Nginx 进程,并设置服务器块以从单

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name