版权声明:本文为博主原创文章,未经博主允许不得转载。 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 类似数组,有下标按顺序表示命令参数的内容