C++ 无法将OpenCV 16位灰度图像写入/显示到磁盘

C++ 无法将OpenCV 16位灰度图像写入/显示到磁盘,c++,opencv,C++,Opencv,我有一个2D无符号短数组,我正试图从中使用OpenCV创建一个16位灰度图像。尝试的代码如下所示。但当我试图显示或保存到磁盘时,我得到一个所有像素值为零的黑色图像 unsigned short Img_2D_array [SIZE_X][SIZE_Y]; for(int vr=1; vr<20; vr++) { for(int vc=1; vc<16; vc++) { Img_2D_array[(vr)][(vc)] = (

我有一个2D无符号短数组,我正试图从中使用OpenCV创建一个16位灰度图像。尝试的代码如下所示。但当我试图显示或保存到磁盘时,我得到一个所有像素值为零的黑色图像

unsigned short Img_2D_array [SIZE_X][SIZE_Y];
for(int vr=1; vr<20; vr++)
    {
        for(int vc=1; vc<16; vc++)
        {
          Img_2D_array[(vr)][(vc)] = (unsigned short)(varPixelValue);
        }
    }
Mat var_mat = Mat(SIZE_X,SIZE_Y,CV_16UC1,&Img_2D_array);
imwrite("testImage.png",var_mat);
无符号短Img_2D_数组[SIZE_X][SIZE_Y];

对于(int vr=1;vr代码片段没有问题。但是我查看图像时使用的查看器不支持16位灰度图像,与代码无关。

尝试了您的代码,并且有效地工作。您能否发布一个简单的工作示例,说明您在创建数组和imwrite之间所做的工作?varPixelValu是什么e、 SIZE_X,SIZE_Y?SIZE_X,Y是图像大小,varPixelValue是0到255*255范围内的像素值,这一点都没有帮助。这是一个代码片段,完整的代码不能放在这里。代码几乎没有像SIZE_X(int)、SIZE_Y(int)和varPixelValue(int)这样的输入。我试图给出每一个细节。如果你认为你需要知道一些东西,请具体说明。