用imageROI来增加某范围的像素

先贴出代码
# include "highgui.h"
# include "cv.h"
# include<iostream>
using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	IplImage* src ;
	if ( argc = 7 && ((src = cvLoadImage(argv[1],1)) != 0))
	{
		int x =atoi(argv[2]);
		int y = atoi(argv[3]);
		int width = atoi(argv[4]);
		int height = atoi(argv[5]);
		int add = atoi(argv[6]);

		cvSetImageROI(src, cvRect(x,y,width, height));
		cvAddS(src, cvScalar(add), src);
		cvResetImageROI(src);
		cvNamedWindow("Roi_Add",1);
		cvShowImage("Roi_Add", src);																							
		cvWaitKey();
	}
	return 0;
}

1、main函数的参数传递

(1)argc、argv

argc:代表参数的个数,可以在main函数里面作为判断条件或者不作初始化,传入的参数个数为多少它也为多少;

argv:代表传入的参数;一般情况下是指向字符型指针的指针,原理如下:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     char *a[] = {"Wel", "To", "China"};
 7     char **p = a;
 8     for(int i = 0; i < 3; i++)
 9     {
10         for (int j = 0; j < strlen(a[i]) + 1; j++)
11         {
12             cout << a[i][j] << "\t" << (void *)&a[i][j] << endl;
13         }
14         cout << endl;
15     }
16     
17     for (int i = 0; i < 3; i++)
18     {
19         cout << "a[" << i << "] = " << (void *) a[i] << endl
20              << "&a[" << i << "] = " << &a[i] << endl;
21     } 
22 
23 
24     cout << "p  = " << p << endl
25          << "&p = " << &p << endl;
26     return 0;
27 }

运行结果图如下:

我们先看下内存分配图:

由上图可以看出a[0]中存放着'W'的地址,a[1]中存放着'T'的地址,a[2]中存放着'C'的地址,只是这些地址都是指向字符型的,所以直接cout的会输出字符串,而指针p中存放着a[0]的地址,所以*p等于a[0],都是获得'W'的地址,即00A778CCC,而**p和a[0][0]等价都获得了地址00A778CCC中存放的值W。由上图我们可以看到字符地址相隔1个字节,而指针地址相隔4个字节,这样就便于++运算,获得下一个地址了,列如++p后,p就指向a[1],p中存放的是a[1]的地址。


2、如何进行main函数的参数传递

一、第一种方法

(1)按以下步骤,首先点击“属性”



(2)进入“调试”页面



(3)在“命令参数”行中输入需要的参数值,之间用空格隔开


二、第二种方法:通过cmd窗口赋值

 运行命令为:

hello.exe Shiqi Yu

那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。 Image:Hello-argc-argv.png


3、特别地,设置x/y/width/height时,要参考原图的尺寸范围,否则程序将会运行出错。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值