C++ Can';t使用OpenCV显示来自kinect dk的图像-空白图像
我的问题看起来很简单。我试图从Azure Kinect DK获得图像,使用SDK为C++,然后使用OpenCV显示它。代码正在运行,但在结果中我只能看到灰色图像。那么这里缺少什么呢C++ Can';t使用OpenCV显示来自kinect dk的图像-空白图像,c++,opencv,kinect,kinect-sdk,C++,Opencv,Kinect,Kinect Sdk,我的问题看起来很简单。我试图从Azure Kinect DK获得图像,使用SDK为C++,然后使用OpenCV显示它。代码正在运行,但在结果中我只能看到灰色图像。那么这里缺少什么呢 k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL; config.camera_fps = K4A_FRAMES_PER_SECOND_30; config.color_format = K4A_IMA
k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_BGRA32; // <==== For Color image
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED; // <==== For Depth image
k4a_image_t colorImage = k4a_capture_get_color_image(capture); // get image metadata
if (colorImage != NULL)
{
printf("Capture");
// you can check the format with this function
k4a_image_format_t format = k4a_image_get_format(colorImage); // K4A_IMAGE_FORMAT_COLOR_BGRA32
// get raw buffer
uint8_t* buffer = k4a_image_get_buffer(colorImage);
// convert the raw buffer to cv::Mat
int rows = k4a_image_get_height_pixels(colorImage);
int cols = k4a_image_get_width_pixels(colorImage);
Mat image2(rows, cols, CV_8UC4, (void*)buffer, cv::Mat::AUTO_STEP);
// ...
cv::imshow("test", image2);
k4a_image_release(colorImage);
}
k4a_device_configuration_t config=k4a_device_config_INIT_DISABLE_ALL;
config.camera\u fps=K4A\u帧/u秒\u 30;
config.color\u format=K4A\u IMAGE\u format\u color\u BGRA32;// 在显示之前,请尝试将图像转换为RGB
Mat cimg;
cvtColor(image2, cimg, CV_GRAY2RGB);
然后显示新图像
cv::imshow("test", cimg);
如果你只看到灰色的图像,可能是因为它没有时间显示。您可以在显示图像后添加waitKey:
cv::imshow("test", image2);
int keyboard = waitKey(30);
例如,您可以使用变量键盘退出程序/功能。waitKey的参数指示等待的时间量