0
出現奇怪的問題。我寫了幾個函數來將一個mat轉換成一個2D int數組,反之亦然。我第一次寫了3通道8位版本,可以很好地工作,但16位灰度版本似乎在某個維度上跳過索引。使用16位PGM時,OpenCV列索引跳過行(C++接口)
基本上每隔一行都是空白的。 (只有每一秒鐘都會被寫入。)我能想到的唯一的事情就是它與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];
}
}
我忍不住想它有事情做與墊16位代表,但我無法找到此信息。奇怪的是,它在一個維度上工作正常,而不是其他的......
任何人都有想法嗎?
在此先感謝
絕對轟炸!我不知道爲什麼我一直以爲16位定期整數。太多的微控制器行動methinks。謝謝!!! – TheMachinist