奇妙な問題を抱えています。マットから2Dint配列に、またはその逆に変換する関数をいくつか作成しました。私は最初に正常に動作する3チャネル8ビットバージョンを作成しましたが、16ビットグレースケールバージョンは1つの次元のインデックスをスキップしているようです。
基本的に、1行おきに空白になります。(1秒おきに書き込まれるだけです。)私が考えることができる唯一のことは、それが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ビット表現と関係があると思わずにはいられませんが、これに関する情報は見つかりません。それが一方の次元でうまく機能し、もう一方の次元ではうまく機能しないことも奇妙です。
誰かアイデアがありますか?
前もって感謝します