Ubuntu下使用Python调用乐视三合一摄像头
前言
上一篇文章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()
测试结果:
测试成功!
这里有个小bub没解决,这里Run的时候还是有问题,但是用Terminal跑是没问题的,后续解决…
参考资料
[1]、Wnidows下使用Python调用乐视三合一摄像头:https://blog.csdn.net/qq_44847636/article/details/114958454