現在地 >> メニュー >> サンプルコード::OpenCV >> γ変換


問題


以下の画像を読み込んで、ガンマ変換を行え。

画像

答え


#include <cv.h>
#include <highgui.h>
#include <cstdio>
#include <cmath>

void GAMMA(IplImage *img,double gamma,IplImage *dst);


int main( int argc, char **argv)
{

IplImage *image = cvLoadImage( "test2.jpg", CV_LOAD_IMAGE_GRAYSCALE);
if(image ==NULL)
{
printf("File not found\n");
exit(0);
}


IplImage *imgG=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);

GAMMA(image,0.5,imgG); //第三引数が出力先


cvNamedWindow("window0",CV_WINDOW_AUTOSIZE);
cvShowImage("window0",image);
cvNamedWindow("window",CV_WINDOW_AUTOSIZE);
cvShowImage("window",imgG);


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


cvReleaseImage( & image);
cvReleaseImage( & imgG);
cvDestroyWindow("window0");
cvDestroyWindow("window");

return 0;
}




void GAMMA(IplImage *img,double gamma,IplImage *dst)
{
for(int j = 0; j < img->height; j++){
for(int i = 0; i < img->widthStep;i++)
{
dst->imageData[j*img->widthStep + i] = char (255.0 * ( pow( double(unsigned char(img->imageData[j*img->widthStep + i])) /255.0 ,1.0/gamma)));
}
}
}

メモ


char型(-127〜127範囲)のせいで、型変換が複雑?

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






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


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

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