orbbec 奥比中光相机单目及多目调用方式python代码
这篇文章会介绍使用orbbec相机的一些常用代码梯子
- orbbec 奥比中光Astra相机单目及多目调用方式
- 编译sdk
- 调用单相机
- 调用多相机
orbbec 奥比中光Astra相机单目及多目调用方式
Orbbec相机是一个专注于深度感知和计算机视觉应用的设备,通常用于3D扫描、手势识别、增强现实(AR)以及其他需要深度信息的场景。Orbbec相机的SDK(软件开发工具包)提供了丰富的API,支持多种编程语言,如C++、C#和Python,使开发者能够快速实现深度图像采集、物体检测、3D建模等功能。此外,Orbbec相机与国产相机兼容性较好,能够灵活集成到各种应用中,特别适用于需要低成本和高效开发的场合。
国产相机的优势在于其成本效益和便捷性。它们通常与本地技术和需求更加贴合,能够提供较为简化的开发过程,特别是与Orbbec相机结合时,开发者可以利用Orbbec的SDK进行深度信息获取和处理,同时享受国产相机的高性价比和便利的技术支持。这种组合非常适合需要较高性价比并且对开发周期有较高要求的项目,尤其是在一些工业自动化、机器人控制、智能监控等应用领域。
编译sdk
调用单相机方式目前所知有两种,一种是使用openni2,另一张则是使用官方的sdk。但是官方的sdk可以调用多个相机,openni2还未知是否可以,因此本文也只对其sdk进行使用。
https://github.com/orbbec/pyorbbecsdk.git这是官方代码,按照编译流畅再win上进行编译即可,不同版本的py不可以通用
最后会得到以下文件,放入同一文件家里运行下面的调用单相机即可
调用单相机
# -*- coding: utf-8 -*-
# @Time : 2024/11/18 11:27
# @Site :
# @File : get_orbbec_color_depth.py
# @Comment :
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from orbbec.pyorbbecsdk import *
import cv2
import numpy as np
import sys
import argparse
import os
import shutil
from typing import Union, Any, Optional
from orbbec.pyorbbecsdk import FormatConvertFilter, VideoFrame
from orbbec.pyorbbecsdk import OBFormat, OBConvertFormat
ESC_KEY = 27
MIN_DEPTH = 20 # 20mm
MAX_DEPTH = 10000 # 10000mm
def frame_to_bgr_image(frame: VideoFrame) -> Union[Optional[np.array], Any]:
width = frame.get_width()
height = frame.get_height()
color_format = frame.get_format()
data = np.asanyarray(frame.get_data())
image = np.zeros((height, width, 3), dtype=np.uint8)
if color_format == OBFormat.RGB:
image = np.resize(data, (height, width, 3))
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
elif color_format == OBFormat.BGR:
image = np.resize(data, (height, width, 3))
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
elif color_format == OBFormat.YUYV:
image = np.resize(data, (height, width, 2))
image = cv2.cvtColor(image, cv2.COLOR_YUV2BGR_YUYV)
elif color_format == OBFormat.MJPG:
image = cv2.imdecode(data, cv2.IMREAD_COLOR)
elif color_format == OBFormat.I420:
image = i420_to_bgr(data, width, height)
return image
elif color_format == OBFormat.NV12:
image = nv12_to_bgr(data, width, height)
return image
elif color_format == OBFormat.NV21:
image = nv21_to_bgr(data, width, height)
return image
elif color_format == OBFormat.UYVY:
image = np.resize(data, (height, width, 2))
image = cv2.cvtColor(image, cv2.COLOR_YUV2BGR_UYVY)
else:
print("Unsupported color format: {}".format(color_format))
return None
return image
pipeline = Pipeline()
device = pipeline.get_device()
device_info = device.get_device_info()
device_pid = device_info.get_pid()
config = Config()
parser <