#include #include #include int main(int argc, char** argv){ if( argc != 3 ) { printf( "Usage: edge monoimg edgeimg\n" ); exit( 0 ); } IplImage *in = cvLoadImage( argv[1], CV_LOAD_IMAGE_GRAYSCALE ); IplImage *edge = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1); IplImage *infloat = cvCreateImage( cvGetSize(in), IPL_DEPTH_32F, 1); IplImage *edgefloat = cvCreateImage( cvGetSize(in), IPL_DEPTH_32F, 1); cvConvert( in, infloat ); cvSobel( infloat, edgefloat, 1, 0, 3 ); // x方向の微分 //cvSobel( infloat, edgefloat, 0, 1, 3 ); // y方向の微分 cvConvertScale( edgefloat, edge, 1, 128 ); // エッジは正負があるので128足して表示 cvSaveImage( argv[2], edge ); }