刚刚开始学习OpenCV,菜鸟一只。
今天在运行一个简单的opencv小程序时,竟然不知道怎么给程序传递实参了,现在明白了,写下来,记录一下。
代码如下
#include<cv.h>
#include<highgui.h>
using namespace cv;
int main(int argc, char** argv)
{
if (argc != 2)
{
printf("useage: %s <imagefile> \n", argv[0]);
return -1;
}
char* imageName = argv[1];
Mat image;
image = imread(imageName, CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
printf("No image data \n");
return -1;
}
Mat gray_image;
cvtColor(image, gray_image, CV_BGR2GRAY);
imwrite("F:\\opencvEx\\output\\gray_image.jpg", gray_image);
namedWindow(imageName, CV_WINDOW_AUTOSIZE);
namedWindow("Gray image", CV_WINDOW_AUTOSIZE);
imshow(imageName, image);
imshow("Gray image", gray_image);
waitKey(0);
return 0;
}
平时,直接点击工具栏上的运行按钮即可
这个程序需要传递图片进去,不能直接运行。
查询资料知道,int main(int argc, char** argv)中的argc是argv数组中字符串的数目,argv[0]存放main函数所在的文件的名称。
1.【开始】->在【搜索程序和文件】中输入cmd->回车,然后进入工作空间所在目录。
例如我的工作空间名称为Test,放在D:\OpencvExample下面,则我们要进入到的目录是D:\OpencvExample\Test下
2.进入到工作空间的Debug目录下,例如我的是:D:\OpencvExample\Test\Debug
说明,在一个解决方案下,无论有多少项目,所有的xx.exe都放在解决方案里的Debug文件夹下。
3.输入xx.exe和图片路径,回车即可。
例如我的项目名称为opencvTest2,图片存放在F:\opencvEx下,图片名为donkey.jpg,
则我应该输入的是:opencvTest2.exe F:\opencvEx\donkey.jpg (两个输入变量之间有一个空格)
注意:在DOS下,输入变量以空格隔开,我们也可以用引号引起来,防止输入的文件名或路径中有空格,
即:"opencvTest2.exe" " F:\opencvEx\donkey.jpg"