1

RGB 画像の領域の平均色を計算しようとしています。画像の関心領域はマスクで表されます。関数をopencvで使用cvAvgしましたが、どういうわけか正しく実行できません。次のコードを使用しました。

//Prepare the mask
CvMat*regionMask = cvCreateMat(inImage->height, inImage->width, CV_8UC1);
cvZero(regionMask);
uchar* maskData = regionMask->data.ptr;
if(some_cond)
   maskData[(p.y)*inImage->width + p.x] = 1;

//Compute average and set the output region
cvSet(outImage, cvAvg(inImage, regionMask), regionMask);

結果は次のとおりです。

最初の画像が入力され、次にマスク、そして出力画像が続きます。

入力画像 マスク 出力

ここで何か間違ったことをしていますか?事前にご協力いただきありがとうございます。

4

1 に答える 1

0

私はそれを考え出した。ステートメント maskData[(p.y)*inImage->width + p.x] = 1;を次のように置き換えましたが、maskData[(p.y)*maskData->step + p.x] = 1;現在は正常に動作しています。

ありがとう。

于 2013-01-31T06:57:47.713 に答える