最終更新: mikk_ni3_92 2007年10月31日(水) 13:39:55履歴
現在地 >> メニュー >> サンプルコード::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)));
}
}
}
#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)));
}
}
}