私はopencvにかなり慣れていません。大きな (~1000 x ~1000) マトリックスの小さな (9x9) サブマトリックスで何らかの処理を行うループを作成しようとしています。いくつかのマスク マトリックスに基づいて、大きなマトリックスの特定のポイントで 9x9 を処理するかどうかを決定しました。私が読んだドキュメントに基づいて、このコード行をループ内に入れようとしています:
Mat tempROI(*(data->cvData), Rect(i-4,j-4, i+5, j+5));
i と j は、より大きな行列の行、列のインデックスです。次に、tempROI を処理する関数があります。ただし、ROI のサイズが i と j とともに増加していることがわかります。私はダンプしました:
printf("Size of ROI = %d, %d.\nFor IDX = %d, %d\n", tempROI.rows, tempROI.cols, i, j);
ループに入ってデバッグします。ROI が大幅に向上していることがわかります。たとえば、これはランダム ダンプです。
ROI のサイズ = 191, 9. IDX の場合 = 4, 186
明らかに何かが適切に機能していません。誤りは、より大きな部分行列から部分行列を適切に選択する方法についての私の理解にあるというのは公正な仮定だと思います。誰かがこれを行うための最良の方法についてアドバイスできますか?
関連する注意事項として、ループの反復ごとに実際に行列ヘッダーを作成するのではなく、ポインターを使用することを本当に望んでいました。
要するに、私がやろうとしていることを行う正しい方法は何ですか? どうもありがとう。