最終更新: mikk_ni3_92 2007年11月28日(水) 13:05:15履歴
現在地 >> メニュー >> サンプルコード::OpenCV >> ルックアップテーブル
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;
void MAKE_LUT(unsigned char *table);
void LOOK_UP_TABLE(IplImage *imgA,IplImage *imgB,unsigned char *table);
int main( int argc, char **argv)
{
IplImage *imgA = cvLoadImage( "test2.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(imgA ==NULL)
{
cout<<"Can't Load Image ." << endl;
exit(0);
}
cvNamedWindow("ORIGINAL",CV_WINDOW_AUTOSIZE);
cvShowImage("ORIGINAL",imgA);
unsigned char table[256];
MAKE_LUT(table); //LUT用データ作成
LOOK_UP_TABLE(imgA,imgA ,table); //第2引数が出力
cvNamedWindow("LUT",CV_WINDOW_AUTOSIZE);
cvShowImage("LUT",imgA);
cvWaitKey(0);
cvReleaseImage( &imgA );
cvDestroyAllWindows();
return 0;
}
/*********************[ここから、各種関数]*********************/
void MAKE_LUT(unsigned char *table)
{
for(int i = 0; i < 256; i++)
{
if(i >= 0 && i < 32 ) table[i] = 31;
else if(i >= 32 && i < 64) table[i] = 63;
else if(i >= 64 && i < 96) table[i] = 95;
else if(i >= 96 && i < 128)table[i] = 127;
else if(i >=128 && i < 160)table[i] = 159;
else if(i >=160 && i < 192)table[i] = 191;
else if(i >=192 && i < 224)table[i] = 223;
else table[i] = 255;
}
}
void LOOK_UP_TABLE(IplImage *imgA, IplImage *imgB, unsigned char *table)
{
CvMat* lut_mat;
lut_mat = cvCreateMatHeader( 1, 256, CV_8UC1 );
cvSetData( lut_mat, table, 0 );
cvLUT( imgA, imgB, lut_mat );
cvReleaseMat( &lut_mat );
}
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;
void MAKE_LUT(unsigned char *table);
void LOOK_UP_TABLE(IplImage *imgA,IplImage *imgB,unsigned char *table);
int main( int argc, char **argv)
{
IplImage *imgA = cvLoadImage( "test2.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(imgA ==NULL)
{
cout<<"Can't Load Image ." << endl;
exit(0);
}
cvNamedWindow("ORIGINAL",CV_WINDOW_AUTOSIZE);
cvShowImage("ORIGINAL",imgA);
unsigned char table[256];
MAKE_LUT(table); //LUT用データ作成
LOOK_UP_TABLE(imgA,imgA ,table); //第2引数が出力
cvNamedWindow("LUT",CV_WINDOW_AUTOSIZE);
cvShowImage("LUT",imgA);
cvWaitKey(0);
cvReleaseImage( &imgA );
cvDestroyAllWindows();
return 0;
}
/*********************[ここから、各種関数]*********************/
void MAKE_LUT(unsigned char *table)
{
for(int i = 0; i < 256; i++)
{
if(i >= 0 && i < 32 ) table[i] = 31;
else if(i >= 32 && i < 64) table[i] = 63;
else if(i >= 64 && i < 96) table[i] = 95;
else if(i >= 96 && i < 128)table[i] = 127;
else if(i >=128 && i < 160)table[i] = 159;
else if(i >=160 && i < 192)table[i] = 191;
else if(i >=192 && i < 224)table[i] = 223;
else table[i] = 255;
}
}
void LOOK_UP_TABLE(IplImage *imgA, IplImage *imgB, unsigned char *table)
{
CvMat* lut_mat;
lut_mat = cvCreateMatHeader( 1, 256, CV_8UC1 );
cvSetData( lut_mat, table, 0 );
cvLUT( imgA, imgB, lut_mat );
cvReleaseMat( &lut_mat );
}