В настоящее время я использую Depthsense 325 из softkinetics. Я совершенно новичок в глубинной камере и openCV. Я хотел бы получить доступ к значению глубины в каждом пикселе, поэтому я немного изменил данную программу consoledemo для проверки кода. Код выглядит следующим образом.Как получить доступ к значению карты глубины с камеры глубины?
/*----------------------------------------------------------------------------*/
// New depth sample event handler
void onNewDepthSample(DepthNode node, DepthNode::NewSampleReceivedData data)
{
int32_t w, h;
FrameFormat_toResolution(data.captureConfiguration.frameFormat,&w,&h);
g_dFrames++;
// show depth image
if (data.depthMap != nullptr) {
cv::Mat mat(h, w, CV_16SC1, (void*)(const int16_t*)data.depthMap);
cv::imshow("SoftKinetic Depth Camera", mat);
cv::waitKey(1);
}
// save depthmap (h =320, w=240)
cv::Mat test_mat(h, w, CV_16SC1, (void*)(const int16_t*)data.depthMap);
cout << "rows: " << test_mat.rows << endl;
cout << "col: " << test_mat.cols << endl;
printf("%d \n",test_mat.at<short>(0,0));
}
Однако он продолжает показывать сообщение об ошибке: ошибка утверждения opencv не удалась. Кто-нибудь, пожалуйста, дайте мне знать, что не так с моим кодом. Моя система - окно 7, Microsoft visual studio 2010, opencv 2.4.6
Этот код является неправильным. DepthMap в DepthSense имеет тип 'int16_t'. 'CV_8UC1' - 8 бит. –