OpenNI и OpenCV: cv2.imshow () вылетает с ошибкой: (-215: утверждение не выполнено) dst.data == (uchar *) dst_ptr в функции 'cvShowImage' - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить изображение глубины с камеры Orbbec Astra Pro, подключенной к машине с Windows 10. Я установил opencv-python 4.0.0.21 и primesense 2.2.0.30.post5, которые являются последними стабильными пакетами 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: \ Проекты \ OpenCV-питон \ OpenCV \ модули \ highgui \ SRC \ window_w32.cpp: 1230: ошибка: (-215: утверждение не выполнено) dst.data == (uchar *) dst_ptr в функции 'CvShowImage'

Я понятия не имею, как преобразовать кадр OpenNI в структуру данных OpenCV mat и почему cv2.imshow() отказывается показывать изображение. Кажется, OpenNI правильно инициализируется, по крайней мере, печатает openni2 ready ... Что я здесь не так делаю?


Редактировать

Кажется, это ошибка, о которой я сообщил здесь https://github.com/skvark/opencv-python/issues/167


Раствор (вид)

Понижение версии OpenCV до последней версии 3.x сделало это!

pip install --upgrade opencv-python==3.4.5.20

...