学习 Opencv 例 3.14 正确跑出效果过程的解读

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CV2017/article/details/82944968

代码:

#include <cv.h>
#include <highgui.h>

int main(int argc, char** argv)
{
	IplImage *src1, *src2;
	if (argc == 9 && ((src1 = cvLoadImage(argv[1], 1)) != 0) && ((src2 = cvLoadImage(argv[2], 1)) != 0))
	{
		int x = atoi(argv[3]);
		int y = atoi(argv[4]);
		int width = atoi(argv[5]);
		int height = atoi(argv[6]);
		double alpha = (double)atof(argv[7]);
		double beta = (double)atof(argv[8]);
		cvSetImageROI(src1, cvRect(x, y, width, height));
		cvSetImageROI(src2, cvRect(0, 0, width, height));
		cvAddWeighted(src1, alpha, src2, beta, 0.0, src1);
		cvResetImageROI(src1);
		cvNamedWindow("Alpha_blend", 1);
		cvShowImage("Alpha_blend", src1);
		cvWaitKey();
	}
	return 0;
}

运行结果:

 

参数设置:

 这里正确设置命令参数是正确跑出效果的前提,有一个重要的知识点需要去学习:argc 与 argv

argc 指命令参数的个数,从图片中可以数出得 8,那为什么程序代码中要去判断 argc == 9 呢?这是因为 argv[0] 等于程序的名字,没有出现在这里的命令参数中,也就是说这里的命令参数是以 argv[1] 开始的,第一张图片对应 argv[1],第二张图片对应 argv[2],以此类推。

argv 类似数组,有下标按顺序表示命令参数的内容

猜你喜欢

转载自blog.csdn.net/CV2017/article/details/82944968