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

时间:2011-11-08 00:45:21

标签: 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 **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位表示有关,但我找不到相关的信息。奇怪的是,它在一个维度上工作得很好而不是另一个维度....

有人有想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我认为这是由“unsigned int”使用引起的。尝试16位灰度图像的“无符号短路”。