如何在OpenCV中使用16位灰度?

LeO*_*ArD 6 c++ graphics opencv

我找不到这些问题的答案:

  1. 我可以使用OpenCV显示16位灰度图片吗?我试过imshow()但OpenCV创建的窗口上什么都没有出现.

  2. 如何将16位灰度图像转换为B5G6R5图像?我应该创建什么参数cv::Mat来存储这个结构?我试过cv::cvtColor(m_cvTmp, tmp, CV_GRAY2BGR565)但这个功能一直在崩溃.关于杂项图像转换文档没有说明答案.

PS:我要处理的图像已经在内存中了.

Luc*_*nzo 0

1)你必须看一下这个文档

你的代码将是这样的:

Mat imageGrey = imread("<image_name>", CV_LOAD_IMAGE_GRAYSCALE);
Run Code Online (Sandbox Code Playgroud)

2)

Mat imageGrey = imread("<image_name>", CV_LOAD_IMAGE_GRAYSCALE);
Mat imageBGR;
cvtColor(imageGrey, imageBGR, CV_GRAY2BGR565);
Run Code Online (Sandbox Code Playgroud)

有效吗?