#include #include #include int main(int argc, char** argv){ if( argc != 4 ) { printf( "Usage: sub img1 img2 dstimg\n" ); exit( 0 ); } IplImage *in1 = cvLoadImage( argv[1], CV_LOAD_IMAGE_GRAYSCALE ); IplImage *in2 = cvLoadImage( argv[2], CV_LOAD_IMAGE_GRAYSCALE ); IplImage *dstimg = cvCreateImage( cvGetSize(in1), IPL_DEPTH_8U, 1); IplImage *in1float = cvCreateImage( cvGetSize(in1), IPL_DEPTH_32F, 1); IplImage *in2float = cvCreateImage( cvGetSize(in1), IPL_DEPTH_32F, 1); IplImage *dstimgfloat = cvCreateImage( cvGetSize(in1), IPL_DEPTH_32F, 1); cvConvert( in1, in1float ); cvConvert( in2, in2float ); cvSub( in1float, in2float, dstimgfloat ); cvConvertScale( dstimgfloat, dstimg, 1, 128 ); // 差分は正負があるので128足して表示 cvSaveImage( argv[3], dstimg ); }