0
奇妙な問題があります。私は、マットから2D int配列に変換する関数と、その逆の関数を書きました。私は最初にうまく動作する3チャンネルの8ビットバージョンを書いたが、16ビットのグレースケールバージョンは次元の1つでインデックスをスキップしているようだ。16ビットPGM(C++インターフェイス)を使用する場合、OpenCVの列インデックスが行をスキップします
基本的に2行目は空白です。 (1秒おきに書かれています)私が考えることができるのは、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];
}
}
:
以下がコードです。 1次元ではうまく動作し、他の次元ではうまく動作しないということも奇妙です。
誰でも知っていますか?私はこれが "unsigned int型" の使用によって引き起こされると考え、事前
絶対にバングしてください!なぜ私は定期的なintを16ビットと考え続けるのか分かりません。あまりにも多くのマイクロコントローラのアクションのメトリング。ありがとう!!! – TheMachinist