使用16位PGM(C++接口)时,OpenCV列索引跳过行

使用16位PGM(C++接口)时,OpenCV列索引跳过行,opencv,indexing,16-bit,Opencv,Indexing,16 Bit,有一个奇怪的问题。我编写了两个函数将mat转换为2D int数组,反之亦然。我首先编写了3通道8位版本,工作正常,但16位灰度版本似乎跳过了其中一个维度的索引 基本上每第二行都是空白的。只有每一秒都有一封信。我唯一能想到的是它与16位表示有关 代码如下: // Convert a Mat image to a standard int array void matToArrayGS(cv::Mat imgIn, unsigned int **arr

有一个奇怪的问题。我编写了两个函数将mat转换为2D int数组,反之亦然。我首先编写了3通道8位版本,工作正常,但16位灰度版本似乎跳过了其中一个维度的索引

基本上每第二行都是空白的。只有每一秒都有一封信。我唯一能想到的是它与16位表示有关

代码如下:

            // Convert a Mat image to a standard int array
            void matToArrayGS(cv::Mat imgIn, unsigned int **array)
            {
                int i, j;

                for(i=0; i<imgIn.rows; i++)
                {
                    for(j=0; j<imgIn.cols; j++)
                    array[i][j]=imgIn.at<unsigned int>(i,j);
                }
            }

            // Convert an array into a Greyscale Mat image
            void arrayToMatGS(unsigned int **arrayin, cv::Mat imgIn)
            {
                int i, j;

                for(i=0; i<imgIn.rows; i++)
                {
                    for(j=0; j<imgIn.cols; j++)
                    imgIn.at<unsigned int>(i,j)=arrayin[i][j];
                }
            }
我忍不住想这和Mat中的16位表示有关,但我找不到这方面的信息。奇怪的是,它在一个维度上工作得很好,而在另一个维度上却不行

有人有主意吗


提前感谢

我认为这是由于使用了unsigned int造成的。尝试16位灰度图像的无符号缩写。

绝对可以!我不知道为什么我一直认为常规整数是16位的。我认为微控制器的动作太多了。谢谢