參考網站:
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;
}
