小插曲,接下来
发布时间:2025-06-24 17:50:24 作者:北方职教升学中心 阅读量:585
安装额外的numpy和opencv,这样就可以得到一个可以点击测距窗口的例子。
下一步:
openi库安装#xff1a;如果速度较慢,我手中这款型号的深度相机来源也很搞笑,是我从闲鱼几十块钱买的,成色非常新甚至包装也没有拆除#xff0c;非常便宜曾经让我觉得可能是坏,原因是大哥不会用,买了之后大哥那边涨了20哈哈哈。我们就可以开始了。
接下来介绍第二种方法,
参考这位大佬的博客:(17)深度点云学习-python安装openi打开奥比中光RGBD_点云深度学习python程序-CSDN博客。我们来介绍一下使用,这里有两种方法
第一种使用基于openi2的官方sdk:奥比中光AI开放平台|世界上第一个专注于3D视觉开放的平台。
https://vcp.developer.orbbec.com.cn/resourceCenter?defaultSelectedKeys=72。


小插曲,接下来,
from openni import openi2import numpy as npimport cv2import timeDEVICE_INFO = {}WINDOW_NAME_DEPTH = 'Depth Image'WINDOW_NAME_COLOR = 'Color Image'COLOR_MAP_TYPE = 8 # 可以尝试不同的颜色映射,
pip install openni -i https://pypi.tuna.tsinghua.edu.cn/simple。之前用来查看。
这样做之后,
深度相机通过python调用openni2的api启动c;之前需要先安装驱动器,按照提示安装即可 。8 色彩鲜艳2.颜色正常,11.黑白ALPHA_VALUE = 0.17MAX_DISTANCE_CM = 800 # 最大有效距离单位为cmFONT = cv2.FONT_HERSHEY_SIMPLEXFONT_SCALE = 0.5FONT_COLOR = (0, 0, 0)FONT_THICKNESS = 1last_click_time = 0click_x, click_y = -1, -1distance_text = ""def mousecallback(event, x, y, flags, param): global click_x, click_y, distance_text, last_click_time if event == cv2.EVENT_LBUTTONDOWN: # 单击事件CV2需要双击事件.EVENT_LBUTTONDBLCLK click_x, click_y = x, y distance = dpt[y, x] / 10.0 # 如果深度值为mm,转换为厘米 distance_text = f"Dis: {distance:.2f} cm" last_click_time = time.time()if __name__ == "__main__": try: openi2.initialize() dev = openi2.Device.open_any() print(dev.get_device_info()) depth_stream = dev.create_depth_stream() dev.set_image_registration_mode(True) depth_stream.start() cap = cv2.VideoCapture(1) cv2.namedWindow(WINDOW_NAME_DEPTH) cv2.setMouseCallback(WINDOW_NAME_DEPTH, mousecallback) while True: frame = depth_stream.read_frame() dframe_data = np.array(frame.get_buffer_as_triplet()).reshape([480, 640, 2]) dpt1 = np.asarray(dframe_data[:, :, 0], dtype='float32') dpt2 = np.asarray(dframe_data[:, :, 1], dtype='float32') dpt2 *= 255 dpt = dpt1 + dpt2 dim_gray = cv2.convertScaleAbs(dpt, alpha=ALPHA_VALUE) # 渲染深度图像 depth_colormap = cv2.applyColorMap(dim_gray, COLOR_MAP_TYPE) if click_x >= 0 and click_y >= 0 and (time.time() - last_click_time) < 5: depth_colormap = cv2.putText(depth_colormap, distance_text, (click_x, click_y), FONT, FONT_SCALE, FONT_COLOR, FONT_THICKNESS, cv2.LINE_AA) cv2.imshow(WINDOW_NAME_DEPTH, depth_colormap) ret, frame = cap.read() if ret: frame = cv2.flip(frame, 1) cv2.imshow(WINDOW_NAME_COLOR, frame) key = cv2.waitKey(1) if key & 0xFF == ord(' '): break depth_stream.stop() dev.close() openi2.unload() cap.release() cv2.destroyAllWindows() except Exception as e: print(f"An error occurred: {e}")。
效果是这样的:鼠标可以在深度图上显示深度信息。 有0~11种渲染模式,
效果是这样的:鼠标可以在深度图上显示深度信息。
深度相机可以像激光雷达一样输出点云图像,可做三维重建还可以将点云图像与rgb视觉融合涉及相机内参标定,你可以参考这个大人物的博客学习开始RGBD深度相机:从原理到实践--ROS noetic+Astra S(上):解读深度测距原理和内外参推导_rgbd相机原理-CSDN博客。或者像我一样简单省事就是把python文件放在基于openi的sdk中,
与您的python文件一起复制这些文件。在开发者资源中心下载安装驱动程序仍然和上面一样。该软件适应性好,使用方便,但不适合扩展,直截了当地说,
接下来:
需要下载资源包。您不需要下载此包:
然后就可以开始编写代码了。它被用来看,用于调试参数什么的,解压后自带驱动,可直接使用,按以下操作下载解压即可,它自己的Orbbec SDK工具不支持这种型号,sdk只能选择openi2c;如果你是新的,c;像下面这样,可以使用镜像源加速:以清华源为例,根据需要安装其他库。你可以使用这个sdk。