learning opencv书中代码,求解释~
*****************************************************************************
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <iostream>
using namespace std;
IplImage *Igray=0, *It = 0, *Iat;
int main( int argc, char** argv, char* env[] )
{
//***************************************
cout << argc << endl;
for(int i=0;i<argc;i++ )
cout << argv[i] << endl;
for(int j=0;j<argc;j++ )
cout << env[j] << endl;
//***************************************
//自己加的一段代码,意在想知道argc,argv及env的输出结果
if(argc != 7){return -1;}
double threshold = (double)atof(argv[1]);
int threshold_type = atoi(argv[2]) ?
CV_THRESH_BINARY : CV_THRESH_BINARY_INV;
int adaptive_method = atoi(argv[3]) ?
CV_ADAPTIVE_THRESH_MEAN_C : CV_ADAPTIVE_THRESH_GAUSSIAN_C;
int block_size = atoi(argv[4]);
double offset = (double)atof(argv[5]);
if(Igray == cvLoadImage(argv[6],CV_LOAD_IMAGE_GRAYSCALE)==0)
{return -1;}
It = cvCreateImage( cvSize(Igray->width, Igray->height), IPL_DEPTH_8U, 1);
Iat = cvCreateImage( cvSize(Igray->width, Igray->height), IPL_DEPTH_8U, 1);
cvThreshold(Igray,It,threshold,255,threshold_type);
cvAdaptiveThreshold(Igray,Iat,255,adaptive_method,threshold_type,block_size,offset);
cvNamedWindow("Raw",1);
cvNamedWindow("Threshold",1);
cvNamedWindow("Adaptive Threshold",1);
cvShowImage("Raw",Igray);
cvShowImage("Threshold",It);
cvShowImage("Adaptive Threshold",Iat);
cvWaitKey(0);
cvReleaseImage(&Igray);
cvReleaseImage(&It);
cvReleaseImage(&Iat);
cvDestroyWindow("Raw");
cvDestroyWindow("Threshold");
cvDestroyWindow("Adaptive Threshold");
return 0;
}
***********************************************************************************
希望哪个大神能够给我做个解释,只要解释以下这段代码就可以了:
if(argc != 7){return -1;}
double threshold = (double)atof(argv[1]);
int threshold_type = atoi(argv[2]) ?
CV_THRESH_BINARY : CV_THRESH_BINARY_INV;
int adaptive_method = atoi(argv[3]) ?
CV_ADAPTIVE_THRESH_MEAN_C : CV_ADAPTIVE_THRESH_GAUSSIAN_C;
int block_size = atoi(argv[4]);
double offset = (double)atof(argv[5]);
if(Igray == cvLoadImage(argv[6],CV_LOAD_IMAGE_GRAYSCALE)==0)
{return -1;}
对您的真诚帮助表示由衷的感谢!
[解决办法]
提取命令行参数的值 并判断合法性
[解决办法]
argc 就是你运行exe程序时传给exe的参数个数
请google:
main 函数 参数
atoi函数
atof函数
[解决办法]
1、参数的个数就是argc的值,argv[0]是自身程序名。if(argc!=7)判断参数够不够7个,目的是因为写程序时,它设置了那么多,都要用到。
2、参数、参数
3、atoX 之类的函数都是字符串专数值之类的
[解决办法]
[解决办法]
空格隔开就可以