【opencv入门之一】图像的载入、显示和输出


 

参考网站:

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

 

1、Opencv的命名空间

  在写简单的Opencv程序的时候,如下是标配;

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


2、Mat类型

  主要用来存放图像的数据结构

Mat myMat= imread("dota.jpg");  


3、imread函数

  用来读取图像的,其原型:

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

  第一个参数:图片路径名

  第二个参数:自带缺省值1

        CV_LOAD_IMAGE_UNCHANGED(-1,忽略)

        CV_LOAD_IMAGE_GRAYSCALE(0,图像转换成灰度1)

        CV_LOAD_IMAGE_COLOR(1,彩色)

        CV_LOAD_IMAGE_ANYDEPTH(2)

        CV_LOAD_IMAGE_ANYDEPTH(4)

Mat image0 = imread ( "boy.png" , CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR );//载入最真实的图像
Mat imagel = imread ( "boy.png" , 0);    //载入灰度图
Mat image2 = imread ( "boy.png" ,199 );    //载入3通道的彩色图像
Mat image3 = imread ( "boy.png"); //载入3通道的彩色图像

 

4、namedWindow函数

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

  第一个参数:窗口的命名

  第二个参数:WINDOW_NORMAL(没有限制)

        WINDOW_AUTOSIZE(自动调整,不能手动,默认值)

        WINDOW_OPENGL(窗口创建的时候便会支持OpenGL)

namedWindow("【4】原画+logo图"); 


5、imshow函数

  显示一幅图像

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

  第一个参数:填需要显示的窗口标识名称

  第二个参数:填需要显示的图像

imshow("【4】原画+logo图",image); 

 

6、imwrite函数

  输出图像到文件,其声明为:

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

  第一个参数:填需要写入的文件名,带上后缀

  第二个参数:填一个Mat类型的图像数据

  第三个参数:一般不用填

imwrite("我喜欢打dota2 .jpg",image);  

 

一个综合的示例:

#include<opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
   
using namespace cv;  
   
   
int main( )  
{  
	//-----------------------------------【一、图像的载入和显示】--------------------------------------  
	//     描述:以下三行代码用于完成图像的载入和显示  
	//--------------------------------------------------------------------------------------------------  
   
	Mat girl=imread("girl.jpg"); //载入图像到Mat  
	//namedWindow("【1】动漫图"); //创建一个名为 "【1】动漫图"的窗口   
	//imshow("【1】动漫图",girl);//显示名为 "【1】动漫图" 的窗口   
   
	//-----------------------------------【二、初级图像混合】--------------------------------------  
	//     描述:二、初级图像混合  
	//-----------------------------------------------------------------------------------------------  
	//载入图片  
	Mat image= imread("dota.jpg",199);  
	Mat logo= imread("dota_logo.jpg");  
   
	//载入后先显示  
	//namedWindow("【2】原画图");  
	//imshow("【2】原画图",image);  
   
	//namedWindow("【3】logo图");  
	//imshow("【3】logo图",logo);  
   
	//定义一个Mat类型,用于存放,图像的ROI  
	Mat imageROI;  
	//方法一  
	imageROI=image(Rect(800,350,logo.cols,logo.rows));  
	//方法二  
	//imageROI=image(Range(350,350+logo.rows),Range(800,800+logo.cols));  
   
	//将logo加到原图上  
	addWeighted(imageROI,0.5,logo,0.3,0.0,imageROI);  
   
	//显示结果  
	namedWindow("【4】原画+logo图");  
	imshow("【4】原画+logo图",image);  
   
	//-----------------------------------【三、图像的输出】--------------------------------------  
	//     描述:将一个Mat图像输出到图像文件  
	//-----------------------------------------------------------------------------------------------  
	//输出一张jpg图片到工程目录下  
	imwrite("我喜欢打dota2 .jpg",image);  
   
	waitKey();  
   
	return 0;  
}  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM