《openCV演算法精解》學習——18.04.10
阿新 • • 發佈:2019-02-02
不積跬步,無以至千里。不要擔心走的太慢,每一步走紮實。
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。