from openni import openni2
import numpy as np
import cv2
def mousecallback(event, x, y, flags,
param): # 是利用opencv的常用函数mousecallback;event 是反馈函数x、y 是反馈的坐标值。EVENT_LBUTTONDBLCLK的类型有很多这只是其中一种意思是:鼠标左键双击输出坐标值。
if event == cv2.EVENT_LBUTTONDBLCLK:
Xc = dpt[y, x] * (x - 326.415982) / 582.795354
Yc = -dpt[y, x] * (y - 249.989410) / 584.395006
print(Xc, Yc, 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(1)
cv2.namedWindow('depth')
cv2.setMouseCallback('depth', mousecallback)
i=1
while (1):
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('s'): # 不断刷新图像,这里是1ms 返回值为当前键盘按键值
# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # RGB图像转为单通道的灰度图像
# gray = cv2.resize(gray, (1000, 1000)) # 图像大小为320*240
cv2.imwrite('E://abc//a//%d.jpg' % i, dpt)
cv2.imwrite('E://abc//b//%d.jpg'%i,frame)
i += 1
if int(key) == ord('q'):
break
depth_stream.stop()
dev.close()
现在用pycharm能实现相机的调用和颜色图与“深度图”的保存,这里的深度移图像保存后就是简简单单的.gpg图像。根本bu能得到它的深度信息。
现在用pycharm能实现相机的调用和颜色图与“深度图”的保存,这里的深度移图像保存后就是简简单单的.gpg图像。根本bu能得到它的深度信息。