首页 > 代码库 > 毛星云博客第三讲学习

毛星云博客第三讲学习

http://blog.csdn.net/poem_qianmo/article/details/20537737

 

使用opencv的命名空间,标配开头

#include <opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
   
using namespace cv;  

  

存储图像

  Mat型存储图像数据

 

读取图像

Mat imread(const string& filename, intflags=1 );

  intflags=1代表三通道彩色图像 =0代表灰度图

 

创建窗口

void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE ); 

  winname 窗口名称 flags可以控制窗口是否改变,默认是根据图片大小

显示

void imshow(const string& winname, InputArray mat);

  InputArray可以理解为Mat

暂停

waitkey(int N)

  等待N毫秒时间 然后按任意按键继续

保存到文件

bool imwrite(const string& filename,InputArray img, const vector<int>& params=vector<int>() );  

 

练习

#include <opencv2/core/core.hpp>
#include <highgui/highgui.hpp>

using namespace cv;
using namespace std;

int main() {
	Mat image = imread("I:\\Pictures\\414非主流的小公举\\414非主流的小公举\\1.jpg");
	namedWindow("小公举");
	imshow("小公举", image);
	waitKey(0);
	imwrite(".\\test.jpg", image);
	return 0;
}

  

后记:

在opencv2.0以前,只有cv,比如cvmat,IplImage,cvloadimage等等,而CvMat是一个Struct,每次调用之前必须进行内存分配,CvMat *a = cvCreateMat(),
用完之后进行内存释放。opencv2.0以后新增C++接口的 Mat矩阵,cv::Mat是一个类(Class),使用是不用分配内存,用完也不用释放,相对应的读取图片为imread等等。
所以现在不用cv开头了

  1. //选择roi,rect的四个参数分别是(x,y)坐标,第三个参数是宽度,第四个参数是高度  
  2.     Mat roi(mat,Rect(0,0,2,1));  
  3.     cout<<roi<<endl;  

毛星云博客第三讲学习