2011-08-10 21 views
0

このコードでは、ピクセルの直接アクセスで画像のピクセル値を減算しようとしていますが、問題はありますか?.....画像の高さが同じで、私は完全に黒画像を取得していますプログラム.....直接アクセスでピクセル値を変更する+ opencv

IplImage * img3 = cvCreateImage(cvSize(img1->height,img1->width),IPL_DEPTH_32F,3); 
// img2 and img1 both are IplImage pointers 
cvZero(img3); 
long value; 
for (int row = 0 ; row < img2->height * img2->width ; row ++){ 
    value = &((uchar*)(img1->imageData))[row] - &((uchar*)(img2->imageData))[row] ; 
    img3->imageData[row] = value; 

答えて

0

1)img2->を実行するたびに幅が...高さ* img2->は、ループ前のように一定の計算幅

2) 私はこの行を理解していません &((uchar *)(img1-> imageData))[行] - &((uchar *)(img2-> im ageData))[row] - 別のポインタからポインタを減算していますか?どうして? 値= img1-> imageData [行] - img2-> imageData [行]; *画像データがある>文字をimg3-かのトリック

3)それはあなたの目標である場合は、(ピクセル値を減算することにより、RGB値を減算することはできません)

4)を行う必要があり、その後、あなたが行を掛けなければならない* 4。

+0

3点目がうまくいかない理由を教えてください。 RGB値はそのピクセル座標に格納されています...したがって、イメージデータでは、値はピクセル座標のいくつかの形式に従って格納されます。たとえば、r0、g0、b0、r1 ...などです。他のwould'ntそれは動作しますか? –

関連する問題