我正在尝试从一个连接到Windows10机器的Orbbec Astra Pro相机接收深度图像。我已经安装了opencv-python 4.0.0.21和{},这似乎是最新可用的稳定的python包。在
这是我正在试验的代码片段:import numpy as np
import cv2
from primesense import openni2
from primesense import _openni2 as c_api
openni2.initialize("./OpenNI-Windows-x64-2.3/Redist")
if openni2.is_initialized():
print('openni2 ready')
else:
print('openni2 not ready')
dev = openni2.Device.open_any()
depth_stream = dev.create_depth_stream()
depth_stream.set_video_mode(c_api.OniVideoMode(pixelFormat = c_api.OniPixelFormat.ONI_PIXEL_FORMAT_DEPTH_100_UM, resolutionX = 640, resolutionY = 480, fps = 30))
depth_stream.start()
while(True):
frame = depth_stream.read_frame()
frame_data = frame.get_buffer_as_uint16()
img = np.frombuffer(frame_data, dtype=np.uint16)
img.shape = (1, 480, 640)
img = np.concatenate((img, img, img), axis=0)
img = np.swapaxes(img, 0, 2)
img = np.swapaxes(img, 0, 1)
cv2.imshow("image", img)
cv2.waitKey(34)
depth_stream.stop()
openni2.unload()
但是,当cv2.imshow()被呼叫时,我收到:cv2.error: OpenCV(4.0.0)
C:\projects\opencv-python\opencv\modules\highgui\src\window_w32.cpp:1230:
error: (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function
'cvShowImage'
我不知道如何将OpenNI框架转换为opencvmat数据结构,也不知道为什么cv2.imshow()拒绝显示图像。OpenNI似乎正确初始化,至少它打印openni2 ready。。。我做错什么了?在
编辑
溶液(某种)
将OpenCV版本降级到最新的3.x版本使它工作起来了!在
pip install --upgrade opencv-python==3.4.5.20