Opencv的准备阶段小知识

来源:互联网 发布:软件开发过程管理流程 编辑:程序博客网 时间:2024/06/05 15:27

1.匈牙利命名法: 变量名=属性+类型+对象;

2.argc和argv是UNIX,Linux,MacOS中main函数的标准写法。

3.在Windows的控制台程序中,将main()函数作为程序入口点,并且很少使用argc和argv等参数;

4.printf函数标准的C语言函数,包含在 stadio.h当中,但是opencv中也包含它,只要包含了opencv.hpp就可以使用它;最后一个字母f是format“”格式“”。

5.imread(const string&filename,flag)    //flag是0时载入灰度图像,flag>0时,是三通道的彩色图像,flag<0时是包含alpha通道的加载图像。彩色图像按照BGR存储

6.imshow在显示图像时,如果窗口是CV_WINDOW_AUTOSIZE创建的,就显示原始图像的大小,否则将进行缩放。缩放取决于图像的深度。

7.nameWindow原型是  void  nameWindow(const string& winname,int flags=WINDOW_AUTOSIZE);默认不填是  WINDOW_AUTOSIZE 窗口自动调整适应图像

8. imwrite是将图片保存为文件的函数,原型是:bool imwrite (const string&filename,InputArray img,cont vector <int >params=vector<int>() );

第一个是需要保存的文件名,第二个是Mat型,第三个一般情况不填

9.遇到函数原型中的InputArray/OutputArray类型,可以简单把它们当成Mat型

10.alpha通道是指一个图片的透明和不透明度。其中黑表示透明,白表示不透明,灰表示半透明。

11.函数中params 其实就是一个 vector<int>型的参数,这个参数是不确定的,可以存一个变量名,一个值。push_back在vector类中作用为在vector尾部加入一个数据。

12.try....catch...

catch(...)的作用

  catch(…)能够捕获多种数据类型的异常对象,所以它提供给程序员一种对异常对象更好的控制手段,使开发的软件系统有很好的可靠性。因此一个比较有经验的程序员通常会这样组织编写它的代码模块,如下:

void Func(){try{    // 这里的程序代码完成真正复杂的计算工作,这些代码在执行过程中    // 有可能抛出DataType1、DataType2和DataType3类型的异常对象。}catch(DataType1& d1){}catch(DataType2& d2){}catch(DataType3& d3){}// 注意上面try block中可能抛出的DataType1、DataType2和DataType3三// 种类型的异常对象在前面都已经有对应的catch block来处理。但为什么// 还要在最后再定义一个catch(…) block呢?这就是为了有更好的安全性和// 可靠性,避免上面的try block抛出了其它未考虑到的异常对象时导致的程// 序出现意外崩溃的严重后果,而且这在用VC开发的系统上更特别有效,因// 为catch(…)能捕获系统出现的异常,而系统异常往往令程序员头痛了,现// 在系统一般都比较复杂,而且由很多人共同开发,一不小心就会导致一个// 指针变量指向了其它非法区域,结果意外灾难不幸发生了。catch(…)为这种// 潜在的隐患提供了一种有效的补救措施。catch(…){}}

13.图像叠加函数

addWeighted这里第五个参数是double类型的gamma,一个加到权重总和上的标量值

dst=第一个参数*第二个参数+第三个参数*第四个参数+第五个参数

第六个参数要求与前两个Mat有相同的通道数和尺寸

第七个参数在两个Mat具有相同深度时,默认为-1,可以不填。

using namespace std;
using namespace cv;
int main ()
{
Mat img=imread("cui.jpg");
Mat logo=imread("logo.png"); 
Mat imgROI; 
imgROI=img(Rect(20,20,logo.cols,logo.rows));            //定义感兴趣区域,注意后面的cols是宽度,rows是高度,别弄反了!
addWeighted(imgROI,0.5,logo,0.5,0.0,imgROI);            //在这里必须设置ROI的原因是,相加的两个Mat必须相同尺寸;
imshow("a",img);
waitKey (0);
}
 14.

0 0