RealSense、ZED 和奥比中光Astra几款主流相机介绍及应用

news2024/9/28 1:13:23

以下是英特尔 RealSense、Stereolabs ZED 和奥比中光Astra几款相机的详细对比,包括参数、性能以及二次开发等支持,附带代码示例。

详细信息对比和二次开发示例

1. 英特尔 RealSense (例如 D435/D455)

  • 深度技术:立体视觉 + 红外投影
  • 分辨率
    • D435: 1280x720 @ 30fps
    • D455: 1920x1080 @ 30fps
  • 工作范围:0.2 米到 10 米
  • 视场角 (FOV):宽度 86°,高度 57°
  • 通讯接口:USB 3.0
  • SDK 支持: Intel RealSense SDK
  • 二次开发支持:C++, Python, ROS 等
  • 安装依赖
pip install pyrealsense2

代码示例(Python)

import pyrealsense2 as rs
import numpy as np
import cv2

# 创建管道
pipeline = rs.pipeline()

# 配置流
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)

# 启动流
pipeline.start(config)

try:
    while True:
        frames = pipeline.wait_for_frames()
        depth_frame = frames.get_depth_frame()
        color_frame = frames.get_color_frame()

        if not depth_frame or not color_frame:
            continue

        # 将帧转换为numpy数组
        depth_image = np.asanyarray(depth_frame.get_data())
        color_image = np.asanyarray(color_frame.get_data())

        # 显示图像
        cv2.imshow('Color', color_image)
        cv2.imshow('Depth', depth_image)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
finally:
    pipeline.stop()
    cv2.destroyAllWindows()

代码示例(C++)

#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include <iostream>

int main() {
    // Create a RealSense pipeline
    rs2::pipeline p;

    // Start the pipeline with default configuration
    p.start();

    while (true) {
        // Wait for a new frame
        rs2::frameset frames = p.wait_for_frames();

        // Get the depth frame
        rs2::depth_frame depth = frames.get_depth_frame();
        // Get the color frame
        rs2::frame color = frames.get_color_frame();

        if (!depth || !color) continue;

        // Get the dimensions of the image
        int width = depth.get_width();
        int height = depth.get_height();

        std::cout << "Depth Frame: " << width << "x" << height << std::endl;

        // Process the images (for demonstration, we just print the size)
        // Here you can add your own image processing code

        // Break the loop on a specific condition (e.g., pressing a key)
        // For this example, we'll just run indefinitely
    }

    return 0;
}

2. ZED (Stereolabs)

  • 深度技术:立体视觉 + IMU
  • 分辨率
    • ZED 2: 4416x1242 @ 15fps(720p模式约 60fps)
  • 工作范围:0.5 米到 20 米
  • 视场角 (FOV):水平 110°,垂直 75°
  • 通讯接口:USB 3.0
  • SDK 支持:ZED SDK
  • 二次开发支持:C++, Python, Unity, ROS 等
    安装依赖
    参考 ZED SDK 安装指南

代码示例(Python)

import sys
import time
import pyzed.sl as sl

# 创建相机对象
zed = sl.Camera()

# 配置相机
init_params = sl.InitParameters()
init_params.camera_resolution = sl.RESOLUTION.HD720
init_params.depth_mode = sl.DEPTH_MODE.PERFORMANCE
zed.open(init_params)

while True:
    # 捕获图像
    if zed.grab() == sl.ERROR_CODE.SUCCESS:
        image = sl.Mat()
        zed.retrieve_image(image, sl.VIEW.COLOR)
        depth = sl.Mat()
        zed.retrieve_measure(depth, sl.MEASURE.DEPTH)

        # 获取图像数据
        image_ocv = image.get_data()
        depth_ocv = depth.get_data()

        # 显示图像
        cv2.imshow("ZED Color", image_ocv)
        cv2.imshow("ZED Depth", depth_ocv)
        
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

# 关闭相机
zed.close()

代码示例(C++)

#include <sl/Camera.hpp>

int main(int argc, char **argv) {
    sl::Camera zed;
    sl::InitParameters init_params;
    init_params.camera_resolution = sl::RESOLUTION::HD720;
    init_params.depth_mode = sl::DEPTH_MODE::PERFORMANCE;

    // 开始相机
    if (zed.open(init_params) != sl::ERROR_CODE::SUCCESS) {
        std::cerr << "Error opening ZED camera." << std::endl;
        return EXIT_FAILURE;
    }

    sl::Mat image, depth;

    while (true) {
        if (zed.grab() == sl::ERROR_CODE::SUCCESS) {
            zed.retrieveImage(image, sl::VIEW::LEFT);
            zed.retrieveMeasure(depth, sl::MEASURE::DEPTH);

            // 显示图像和深度
            cv::imshow("ZED Image", image.getCvMat());
            cv::imshow("ZED Depth", depth.getCvMat());

            if (cv::waitKey(1) == 'q') break;
        }
    }
    zed.close();
    return EXIT_SUCCESS;
}

3. 奥比中光(Orbbec)

  • 深度技术:结构光
  • 分辨率
    • Astra: 640x480 @ 30fps
    • Astra Pro: 1280x720 @ 30fps
  • 工作范围:0.4 米到 8 米
  • 视场角 (FOV):水平 60°,垂直 49°
  • 通讯接口:USB 2.0 / USB 3.0
  • SDK 支持:奥比中光 SDK
  • 二次开发支持:C++, C#, Python, Unity 等
  • 安装依赖
    参考 奥比中光 SDK 安装指南

代码示例(Python)

import numpy as np
import cv2
import openni2

# 初始化
openni2.initialize()
dev = openni2.Device.open_any()
depth_stream = dev.create_depth_stream()
color_stream = dev.create_color_stream()

# 开启流
depth_stream.start()
color_stream.start()

while True:
    depth_frame = depth_stream.read_frame()
    color_frame = color_stream.read_frame()

    depth_data = np.frombuffer(depth_frame.get_buffer_as_uint16(), dtype=np.uint16)
    color_data = np.frombuffer(color_frame.get_buffer_as_uint8(), dtype=np.uint8)

    # 处理深度数据
    depth_image = depth_data.reshape((depth_frame.height, depth_frame.width))
    color_image = color_data.reshape((color_frame.height, color_frame.width, 3))

    # 显示图像
    cv2.imshow('Color Image', color_image)
    cv2.imshow('Depth Image', depth_image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 停止流
depth_stream.stop()
color_stream.stop()
openni2.unload()

代码示例(C++)

#include <OpenNI.h>
#include <iostream>

int main() {
    openni::OpenNI::initialize();
    openni::Device device;
    if (device.open(openni::ANY_DEVICE) != openni::STATUS_OK) {
        std::cerr << "Could not open device." << std::endl;
        return -1;
    }

    openni::VideoStream depthStream, colorStream;
    depthStream.create(device, openni::SENSOR_DEPTH);
    colorStream.create(device, openni::SENSOR_COLOR);

    depthStream.start();
    colorStream.start();

    openni::VideoFrameRef depthFrame, colorFrame;

    while (true) {
        depthStream.readFrame(&depthFrame);
        colorStream.readFrame(&colorFrame);

        // 显示深度和颜色
        // 需添加显示代码 (如使用 OpenCV)
        
        if (/* 检测退出条件 */) break;
    }

    depthStream.stop();
    colorStream.stop();
    device.close();
    openni::OpenNI::shutdown();
    return 0;
}

综合参数对比

参数英特尔 RealSenseStereolabs ZED奥比中光
深度技术立体视觉 + 红外投影立体视觉 + IMU结构光
分辨率D435: 1280x720; D455: 1920x1080ZED 2: 4416x1242Astra: 640x480; Pro: 1280x720
工作范围0.2 米到 10 米0.5 米到 20 米0.4 米到 8 米
视场角 (FOV)86° x 57°110° x 75°60° x 49°
通讯接口USB 3.0USB 3.0USB 2.0 / USB 3.0
SDKIntel RealSense SDKZED SDK奥比中光 SDK
二次开发支持丰富的文档与社区详细API与示例文档与多平台支持
参数Intel RealSense D435iZED Mini奥比中光 Astra Pro
分辨率1280x720 (RGB), 640x480 (Depth)1280x720 (RGB), 720p (Depth)1280x720 (RGB), 640x480 (Depth)
深度范围0.3m - 10m0.3m - 20m0.5m - 8m
帧率30 fps (depth + RGB)60 fps (depth + RGB)30 fps (depth + RGB)
通讯接口USB 3.0USB 3.0USB 3.0
视场角69.4° x 42.5°110° x 80°90° x 60°

综合性能对比

  • 计算能力:

    • RealSense 配备 IMU,适合移动设备和机器人。
    • ZED 提供高精度深度数据和较大的视场角,适合 AR/VR 应用。
    • 奥比中光专注于深度图像和手势识别等应用,适合人机交互。
  • 使用场景:

    • RealSense: 机器人视觉、手势识别。
    • ZED: 虚拟现实、增强现实、3D 映射。
    • 奥比中光: 智能家居、互动游戏。

总结

以上是对三种不同厂家相机的基本信息对比及二次开发示例,可作为小白简单了解和熟悉。不同的项目需求可以选择不同的相机,根据具体应用场景进行开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具分享】Chimera勒索病毒解密工具

前言 Chimera勒索软件首次出现在2015年&#xff0c;最初是在德国被发现。该勒索软件不仅加密受害者的文件&#xff0c;还威胁如果不支付赎金&#xff0c;就会将被盗的数据公开发布。这种“双重勒索”策略使得Chimera在众多勒索软件中脱颖而出。Chimera通常通过钓鱼邮件传播&am…

第五部分:6---信号的递达

目录 信号的递达流程&#xff1a; 信号在什么时候递达&#xff1f; 用户态和内核态&#xff1a; 内核态、用户态在页表的映射关系&#xff1a; 操作系统如何得知当前执行状态是用户态还是内核态&#xff1f; 操作系统如何处理被捕捉的信号&#xff1f; 信号的递达流程&am…

Python PyQt5 在frame中生成多个QLabel控件和彻底销毁QLabel控件

文章目录 步骤 1: 创建主窗口和布局步骤 2: 添加QLabel到QFrame步骤 3: 销毁QLabel示例代码 在PyQt5中&#xff0c;在QFrame或任何其他容器控件中生成多个QLabel控件并通过一个标志位或方法来彻底销毁这些QLabel控件是相对直接的操作。以下是一个简单的示例&#xff0c;展示了如…

爬虫小案例:爬取豆瓣网TOP250的电影信息(内含面相对象源码、及详细教学)

爬虫案例二———爬取豆瓣网TOP250的电影信息&#xff0c;并存入MySQL数据库 前提准备 安装pymysql库 pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple Python连接MySQL数据库&#xff0c;并进行增删改查基本操作 连接数据库 """连接MyS…

坚果N1 Air高亮版对比当贝D6X高亮版:谁是2000元预算的投影仪王者?

当贝D6X高亮版新品升级&#xff0c;对于那些计划在这个时间点购买投影仪的用户来说&#xff0c;现在是个绝佳的时机&#xff01;特别是那些预算在两千元左右的&#xff0c;目前两千元左右的投影仪&#xff0c;无外乎两款产品&#xff0c;当贝D6X高亮版和坚果N1 Air高亮版&#…

David律所代理Beau Parsons的小狗插画图案版权维权,速排查下架

案件基本情况&#xff1a;起诉时间&#xff1a;2024-9-16案件号&#xff1a;2024-cv-08505原告&#xff1a;Beau Parsons原告律所&#xff1a;David起诉地&#xff1a;伊利诺伊州北部法院涉案商标/版权&#xff1a;原告品牌简介&#xff1a;Beau Parsons是一位来自澳大利亚的专…

AI情感陪伴新纪元:WT2605C语音芯片在成人用品中的创新应用

在探索成人用品领域的无限可能时&#xff0c;科技的每一次进步都为我们带来了前所未有的体验。而今&#xff0c;WT2605C AI语音芯片的引入&#xff0c;正悄然改变着这一传统行业的面貌&#xff0c;为成人用品赋予了全新的情感陪伴功能&#xff0c;开启了智能化、个性化的新时代…

鸿蒙开发(NEXT/API 12)【硬件(Pen Kit)】手写笔服务

Pen Kit&#xff08;手写笔服务&#xff09;是华为提供的一套手写套件&#xff0c;提供笔刷效果、笔迹编辑、报点预测、一笔成形和全局取色的功能。手写笔服务可以为产品带来优质手写体验&#xff0c;为您创造更多的手写应用场景。 目前Pen Kit提供了四种能力&#xff1a;手写…

Qt_网络编程

目录 1、Qt的UDP Socket 1.1 用Udp实现服务器 1.2 用Udp实现客户端 2、Qt的TCP Socket 2.1 用Tcp实现服务器 2.2 用Tcp实现客户端 3、Qt的HTTP 3.1使用Qt的HTTP 结语 前言&#xff1a; 网络协议是每个平台都必须遵守的&#xff0c;只是不同的平台所提供的网络API不…

[element-ui]记录对el-table表头样式的一些处理

1、表头换行 & 列表项换行 可用element-table组件自带的方法实现列标题换行的效果 2、小圆点样式

Codeforces Round 973 (Div. 2) A-C 题解

C 提交 MLE 了一次&#xff0c;原因是找到答案没加感叹号 A. Zhan’s Blender 题意 原题描述还是不太清楚 你有 n n n 个水果&#xff0c;每秒可以放入搅拌机 y y y 个水果&#xff0c;搅拌机每秒可以搅拌 x x x 个水果&#xff0c;问最终至少需要多少秒能搅完&#xff1…

Python的包管理工具pip安装

Python的包管理工具pip安装 一、安装步骤1.检查 pip是否已安装2.安装 pip方法一&#xff1a;通过 ​ensurepip​ 模块安装(推荐)方法二&#xff1a;通过 ​get-pip.py​ 脚本安装&#xff08;经常应为网络域名问题连接不上&#xff09; 3.验证pip安装4.创建别名5.更新pip 二、常…

Java网络通信—UDP

1.总揽 2.客户端 使用udp通信&#xff0c;需要三个东西&#xff1a;数据本体、通道、数据包装工具 Scanner scanner new Scanner(System.in);String string scanner.next();byte[] bytes string.getBytes();// 数据本体DatagramSocket datagramSocket new DatagramSocket(…

代码随想录冲冲冲 Day58 图论Part9

47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 根据昨天的dijkstra进行堆优化 使用的原因是点多但边少 所以直接对于边进行操作 1.对于priority_queue来说 这是最小堆, 小于的话就是最大堆 之后由于是根据边来说的 所以新建一个Edge并且初始化一下 之后由于使用…

动态规划入门题目->使用最小费用爬楼梯

1.题目&#xff1a; 2.解析&#xff1a; 做题模式&#xff1a; 步骤一&#xff1a;找状态转移方程 步骤二&#xff1a;初始化 步三&#xff1a;填表 步骤四&#xff1a;返回-> dp[n] dp[i]表示到达 i 位置最小花费 逻辑&#xff1a;要爬到楼顶先找到 i 位置 &#xff0c; 要…

深度学习:(八)深层神经网络参数与流程

深层神经网络 符号规定 L L L &#xff1a;表示神经网络的层数&#xff1b; l l l &#xff1a;表示第几层&#xff1b; n [ l ] n^{[~l~]} n[ l ] &#xff1a;表示第 l l l 层的节点数&#xff1b; a [ l ] a^{[~l~]} a[ l ] &#xff1a;表示第 l l l 层中的激活函数&…

【web安全】——sql注入

1.MySQL基础 1.1information_schema数据库详解 简介&#xff1a; 在mysql5版本以后&#xff0c;为了方便管理&#xff0c;默认定义了information_schema数据库&#xff0c;用来存储数据库元数据信息。schemata(数据库名)、tables(表名tableschema)、columns(列名或字段名)。…

360AI搜索上线慢思考模式:成为全球首个慢思考搜索引擎 大幅提升回答质量

近日&#xff0c;360 AI搜索上线“慢思考模式”&#xff0c;成为国内首个具备慢思考能力的AI产品、全球首个具备慢思考能力的搜索引擎。据悉&#xff0c;慢思考模式基于CoE 技术架构&#xff0c;在该模式下360AI搜索能够大幅提升回答质量&#xff0c;完成多数AI ChatBot无法完成…

技术成神之路:设计模式(十七)组合模式

介绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它使你能够将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 1.定义 组合模式允许将叶子对象和组合对象&#xff08;容器…

猫头虎带您解决:‘vue-cli-service’ 不是内部或外部命令

猫头虎带您解决&#xff1a;‘vue-cli-service’ 不是内部或外部命令 &#x1f680; 今天猫头虎收到一个粉丝的提问&#xff1a;“猫哥&#xff0c;我在用 Vue 项目的时候&#xff0c;运行命令 npm run serve 出现了错误提示&#xff0c;vue-cli-service 不是内部或外部命令&a…