作者丨绯村先生
编辑丨3D视觉开发者社区
✨如果觉得文章内容不错,别忘了三连支持下哦~
第一步需要去奥比中光-开发者中心-下载中心-驱动界面下载所需相机驱动
openni库用于3D感知的开发接口,目前openni库支持的设备包括orbbec、Kinect等设备,因此我们需要下载openni库来完成相机的调用。
比起openni官网下载的包,在orbbec官网的包里面自带orbbec相机的动态链接库,因此我们选择下载orbbec官网上的openni包使用,需要去奥比中光-开发者中心-下载中心-OpenNI2 SDK-Windows界面下载所需Openni包。
下载完毕后,我们可以在文件夹下的tools下的NiViewer先预览效果
windows下python环境配置如下:
windows10
Python 3.8.13
Opencv 4.5.5
Openni 2.3.0
Numpy 1.22.4
因为之前我的conda中没有Openni 2.3.0的环境,因此需要pip到自己的python环境中
1.cmd
2.conda env list 查看自己的conda环境
3.conda activate (name) 激活想要安装openni的环境
4.pip install openni 安装openi库
这个提示是我已经安装过,安装成功进行下一步
Note:这是至关重要的一步,不完成没法在openni中调用orbbec相机,一定要记得把刚刚orbbec官网下载的openni文件夹中下述地址的openni2.dll文件和openNI2文件夹复制到你python主程序中,经过多次尝试,此路径下的文件有用:
运行下述例程:
from openni import openni2
import numpy as np
import cv2
def mousecallback(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDBLCLK:
print(y, x, dpt[y,x])
if __name__ == "__main__":
openni2.initialize()
dev = openni2.Device.open_any()
print(dev.get_device_info())
depth_stream = dev.create_depth_stream()
depth_stream.start()
cap = cv2.VideoCapture(0)
cv2.namedWindow('depth')
cv2.setMouseCallback('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
cv2.imshow('depth', dpt)
# ret,frame = cap.read()
# cv2.imshow('color', frame)
key = cv2.waitKey(1)
if int(key) == ord('q'):
break
depth_stream.stop()
dev.close()
直接打开就能看到深度图,但是这个是看不到RGB图的;
这里是因为,openNI是完全支持奥比中光的产品的,Astra系列中的Astra Pro产品(即为乐视三合一摄像头)对应的彩色摄像头使用UVC摄像头,其数据传输并不通过OpenNI2,因此使用OpenNI2应用不能看到彩色数据
参考:
乐视三合一体感摄像头Astra pro开发记录1(深度图、彩色图及点云简单显示)
乐视三合一体感摄像头–基本信息及windows下部分开发
Wnidows下使用Python调用乐视三合一摄像头
版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文
3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。
点击加入3D视觉开发者社区,和开发者们一起讨论分享吧~
也可以移步微信关注官方公众号 3D视觉开发者社区 ,获取更多干货知识哦~