赞
踩
上一篇文章https://blog.csdn.net/qq_44847636/article/details/114958454介绍了如何在 Windows下使用Python调用乐视三合一摄像头,这篇文章会和大家分享,如何在Ubuntu(linux)下调用乐视三合一摄像头…
1)添加驱动
这里我插上摄像头 lsusb
就能看见两个设备,如果你的没显示的话,可以根据我之前的文章安装以下驱动。
2)下载opencv、openni库
安装opencv:pip3 install opencv-python -i https://pypi.mirrors.ustc.edu.cn/simple/
(这里我这边用中科大的源非常快)
安装openni库:pip install openni
安装完成。
3)配置SDK环境
从官网https://orbbec3d.com/develop下载openni SDK文件:
在下载好的文件下给install.sh
添加权限:sudo chmod 777 install.sh
,再执行:sudo ./install.sh
;具体相对地址如下所示:
这时候会生成一个 OpenNIDevEnvironment 文件。
为了不需要一直source:
sudo gedit ~/bashrc
,然后将下面一行代码加在文件最后面,
source ~/install/OpenNI_2.3.0.66/Linux/OpenNI-Linux-x64-2.3.0.66/OpenNIDevEnvironment
这里要根据你自己的安装位置改一下。
4)运行代码测试
代码如下:
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(2) #这里的摄像头可能要改一下,它可能自动调用电脑摄像头 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 dpt = dpt[:, ::-1] 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()
测试结果:
测试成功!
这里有个小bug没解决,这里Run的时候还是有问题,但是用Terminal跑是没问题的,后续解决…
[1]、Wnidows下使用Python调用乐视三合一摄像头:https://blog.csdn.net/qq_44847636/article/details/114958454
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。