《openCV演算法精解》學習 18 04 10

2021-08-18 12:58:25 字數 1723 閱讀 4346

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

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_(2,3)<<1,2,3,4,5,6);
4、訪問單通道mat m中第r行c列值:

m.at(r,c)也可以用ptr指標實現。
5、構造向量:

vecvi(21,32,45);
vec2i就是vec。

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。

演算法精解概述

原創 演算法精解概述 摘要 本文對 演算法精解 做了簡單描述,對其中的約束和核心思想簡單介紹了一下。演算法概述 是一本比較基礎的講解演算法和資料結構的書,英文名mastering algorithms with c。對於每種資料結構和演算法,裡面都有完整的c語言實現,並沒有單純講解演算法書籍的空洞感...

演算法精解 遞迴 尾遞迴

書上這樣說的 尾遞迴呼叫是整個函式體中最後執行的語句且它的返回值不屬於表示式的一部分時,這個遞迴呼叫就是尾遞迴。什麼意思呢,就是說我們在寫遞迴函式的時候,最後執行的語句肯定是呼叫遞迴函式,並且在呼叫過程中沒有什麼加減乘除。我們拿基本遞迴來說,如下 int fact int n 看看上面,最後執行的語...

演算法精解(三) 歸併排序

歸併排序 o nlogn 所以歸併排序最壞情況能夠達到快速排序的平均水準 需要額外的儲存空間o n 1 對資料不斷的分割,直到剩下乙個乙個的 2 合併資料,在合併的時候,其實是兩個有序的陣列,因此 這個過程是兩個有序陣列進行合併排序 歸併排序 o nlogn 所以歸併排序最壞情況能夠達到快速排序的平...