0

次のコードがあり、チャンネルの数は 3 です

IplImage* img_crop_mat = cvLoadImage("....", 1);
...
int b = 0;
uchar* rgb = (uchar*) img_crop_mat->imageData;

RGおよびB行列をループに入れて、画像全体をスキミングしたいと思います。

for (int y = b; y < height - b; y++)
{    
    ???
    for (int x = b; x < width - b; x++)
    {
        ????
    }
}

私の質問に関する以前のフォーラムでは、CvMat を扱っていますが、コードとしてのポインターは扱っていません。

考慮しなければならない指標は何ですか?

4

1 に答える 1

1

次のマクロを使用して、3 チャネル、8U 画像の任意のピクセルにアクセスできます。

CV_IMAGE_ELEM(myImage, unsigned char, y, x*3 + ChannelOfInterest)

これは左辺値であるため、その値を取得して使用したり、ピクセルの値を変更したりできます。

デフォルトでは、

ChannelOfInterest = 0, blue
ChannelOfInterest = 1, green
ChannelOfInterest = 2, red

実際のデータ構造は非常に簡単です。CV_IMAGE_ELEM の定義を調べてください。

于 2013-03-04T16:49:56.767 に答える