1. 程式人生 > >《openCV演算法精解》學習——18.04.10

《openCV演算法精解》學習——18.04.10

不積跬步,無以至千里。不要擔心走的太慢,每一步走紮實。

1、opencv解壓後有兩個資料夾,"source"和"build",前者存放編譯好的檔案,也是在配置opencv中重要的工具。子檔案doc中包含學習文件。 後者存放原始碼,其中modules裡有core、highgui和imgproc。分別實現了資料結構、影象讀取(UI)和影象處理基本方法。

2、構造矩陣(3行2列):

Mat m=Mat(3,2,CV_32FC1);

或者:

Mat m;
m.create(Size(3,2),CV_32FC1) 

或者:

Mat m=Mat(Size(2,3),CV_32FC1);

3.初始化小型矩陣:

Mat m=(Mat_<int>(2,3)<<1,2,3,4,5,6);

4、訪問單通道Mat m中第r行c列值:

m.at<int>(r,c)也可以用ptr指標實現。

5、構造向量:

Vec<int,3>vi(21,32,45);

Vec2i就是Vec<int,2>。

6、Rect類

Rect(int_x,int_y,int_width,int_hight);
或者:
Rect(int_x,int_y,Size size);//size是寬和高

變式有很多。

7、讀取影象時,將彩色圖轉換灰度圖:

Mat img=imread(filename,CV_LOAD_IMAGE_GRAYSCALE);

8、最近鄰插值和雙線性插值

9、投影變換矩陣(物體在三維空間發生旋轉)

Mat p=getPerspectiveTranform(src,dst);

10、極座標變換(校正影象中原型物體或被包含在圓環中的物體)(圓環被拉直)

r,theta=cv2.cartToPolar(x,y,angleInDegrees=True);//笛卡爾轉極座標
x,y=cv2.polarToCart(r,angel,angleInDegrees=True);//笛卡爾轉極座標

11、calcHist函式來實現直方圖

Mat calcHist(const & image)//將直方圖儲存為一個256行1列的Mat型別。

12、直方圖正規化

原始影象灰度範圍:[Imin.Imax]。目的是是的輸出影象O的灰度範圍是[Omin,Omax]。

計算原圖中最小和最大灰度:

minMaxloc(src,&minVal,&maxVal,NULL,NULL)

正規化函式:normalize

normalize(src,dst,alpha,beta,CV_8U);//alpha和beta分別相當於Omax和Omin。

13、全域性直方圖均衡化:使得輸出影象每一個灰度級畫素點個數相等。

原理:

封裝函式:equalizeHist(src,dst)

限制對比度的自適應直方圖均衡化(減小噪聲和失真):

函式:createCLAHE。