有一个奇怪的问题。我编写了几个函数来将 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 位表示有关,但我找不到这方面的信息。奇怪的是,它在一个维度上运行良好,而在另一个维度上却不行......
有人有想法吗?
提前致谢