現在地 >> メニュー >> サンプルコード::OpenCV >> OpenCV::平均と標準偏差

問題


以下の画像を読み込んで、各色要素ごとに「平均」と「標準偏差」を求めよ。

画像

答え


#include <iostream>
#include <cv.h>
#include <highgui.h>


using namespace std;


/**********[プロトタイプ宣言]****************/
void OUTPUT_Avg_Sdv(const CvScalar &mean,const CvScalar &std_dev);



/***********[メイン関数]***************/
int main(int argc, char **argv)
{

CvScalar mean = cvScalarAll(0);
CvScalar std_dev= cvScalarAll(0);


IplImage *imgA = cvLoadImage( "file2.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(imgA ==NULL)
{
cout<<"Can't Load Image ." << endl;
return (-1);
}




cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",imgA);


cout << "calc Mean and standard deviation...\n";
cvAvgSdv( imgA , &mean, &std_dev);

OUTPUT_Avg_Sdv(mean,std_dev);

cvReleaseImage( &imgA );

cvWaitKey(0); // 0秒待つ => ずっと入力待ち

cvDestroyWindow("window");


return 0;

}


/*******************[ここから、各種関数]*****************/
void OUTPUT_Avg_Sdv(const CvScalar &mean,const CvScalar &std_dev)
{

cout << "Mean(B,G,R) = ( ";
cout << mean.val[0] << ", " << mean.val[1] << ", " << mean.val[2]<<" )"<<endl;

cout << "std_dev(B,G,R) = ( ";
cout << std_dev.val[0] << ", " << std_dev.val[1] << ", " << std_dev.val[2]<<" )"<<endl;

}

CvScalar構造体


以下のように定義されている。

typedef struct CvScalar
{
double val[4];
}
CvScalar;



計算結果は、

val[0] ー
val[1] ー
val[2] ー

の順に格納される。

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます