使用16位PGM(C++接口)时,OpenCV列索引跳过行
有一个奇怪的问题。我编写了两个函数将mat转换为2D int数组,反之亦然。我首先编写了3通道8位版本,工作正常,但16位灰度版本似乎跳过了其中一个维度的索引 基本上每第二行都是空白的。只有每一秒都有一封信。我唯一能想到的是它与16位表示有关 代码如下:使用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
// 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位的。我认为微控制器的动作太多了。谢谢