画像からデータを収集する必要があります。ループはマスクを使用して実行する必要があります。
たとえば、私は単純なクロスマスクを持っています:
1
1 1 1
1
そして、画像のすべてのポイントのグレー値の合計を知る必要があります。
次のような単純なループを使用できます。
// looping except first and last
int nr = image.rows-1;
int nc = image.cols-1;
for (int j=1; j<nr; j++) { // for all rows
const uchar* previous = image.ptr<const uchar>(j-1); // previous row
const uchar* current = image.ptr<const uchar>(j); // current row
const uchar* next = image.ptr<const uchar>(j+1); // next row
for (int i=1; i<nc; i++) {
sum = previos[i] + current[i] + current[i-1]
+ current[i+1] + next[i];
}
}
しかし、私はこれを間違っていると思います。たぶん私は次のようなものを使うべきcv::Mat kernel()
ですか?
パラメータとしてマスクが必要なので、どんな種類のマスクでも使用できます。
マスクを使って画像をループさせる準備ができている機能はありますか?(filter2D関数がありますが、画像を変更する必要はありません。ピクセルを使用して計算するだけです)。