【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