Я пытаюсь использовать Kinect1 с OpenCV 4.1.1 + OpenNI2.2 + QT + MSVC2017 x64
.Я могу захватывать видео / изображения / ИК-изображения / ИК-видео и т. Д. С помощью своего кода.Однако датчик глубины и кулачок RGB не откалиброван.Я перепробовал все рекомендуемые решения, но ни один из них не помог.Обратите внимание, что я собрал OpenCV
с включенными WITH_OPENNI2
и WITH_OPENNI
.
Возникает исключение (генерируется с помощью общего кода ниже)
[ОШИБКА: 0] global C: \ Users \ имя пользователя \ Downloads \ opencv-master \ modules \ videoio \src \ cap.cpp (187) cv :: VideoCapture :: open VIDEOIO (OPENNI2): повышенное исключение OpenCV:
OpenCV (4.1.1-pre) C: \ Users \ имя пользователя \ Downloads \ opencv-master\ modules \ videoio \ src \ cap_openni2.cpp: 359: ошибка: (-2: неопределенная ошибка) OpenCVKinect2: не удалось установить режим вывода потока IR: в функции 'CvCapture_OpenNI2 :: toggleStream'
Я также пробовал эти (для калибровки): OpenCV OpenNI калибровать Kinect Глубина 3D-отображения в RGB (Kinect OpenNI Depthmap в OpenCV RGB Cam)
Код нижепредоставляется в Глубина трехмерного отображения в RGB (Kinect OpenNI Depthmap в OpenCV RGB Cam) , и это вызывает исключение.
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(){
VideoCapture capture;
capture.open(CV_CAP_OPENNI);
//registration
if(capture.get( CV_CAP_PROP_OPENNI_REGISTRATION ) == 0) capture.set(CV_CAP_PROP_OPENNI_REGISTRATION,1);
if( !capture.isOpened() ){
cout << "Can not open a capture object." << endl;
return -1;
}
cout << "ready" << endl;
for(;;){
Mat depthMap,depthShow;
if( !capture.grab() ){
cout << "Can not grab images." << endl;
return -1;
}else{
if( capture.retrieve( depthMap, CV_CAP_OPENNI_DEPTH_MAP ) ){
const float scaleFactor = 0.05f;
depthMap.convertTo( depthShow, CV_8UC1, scaleFactor );
imshow("depth",depthShow);
}
}
if( waitKey( 30 ) == 27 ) break;//esc to exit
}
}
Более интересная вещь, когда я запускаю этот код, большечем один раз подряд, это работает.Но при первом запуске это исключение.В чем может быть проблема?Я могу успешно снимать видео с помощью OpenNI, но мне нужно, чтобы OpenCV напрямую работал с Kinect, а затем калибровал датчики Kinect и камеру RGB.Любая помощь по этим вопросам высоко ценится.Заранее спасибо !