1.仿射變換
又稱仿射對映,意思就是在幾何空間中,乙個向量空間進行一次線性變換並接上乙個平移,變換為另乙個向量空間的過程。它保持了二維影象的「平直性」和「平行性」
仿射變換可以當做是乘以乙個矩陣,也就是線性變換,再加上乙個向量(平移)的形式。通常有三種變換方式:
1.旋轉warpaffine()函式:輸入輸出影象,2x3的變換矩陣,輸出影象的尺寸和一些插值方法,比如線性插值,最近鄰插值等還有兩個帶有預設數值的引數。2.平移
3.縮放
getrotationmatrix2d()函式:計算二維旋轉變換矩陣,引數分別有旋轉中心,旋轉角度和縮放係數。
#include
#include
#include
#include
using namespace cv;
using namespace std;
//定義一些輔助巨集
#define window_name1 "[原始圖視窗]"
#define window_name2 "[經過warp後的影象]"
#define window_name3 "[經過warp和rotate後的影象]"
static
void
showhelptext()
;int
main()
//設定目標影象的大小和型別與原影象一致
dstimage_warp = mat:
:zeros
(srcimage.rows, srcimage.cols, srcimage.
type()
);//設定原影象和目標影象上的三組點以計算仿射變換
src********[0]
=point2f(0
,0);
src********[1]
=point2f
(static_cast<
float
>
(srcimage.cols -1)
,0);
src********[2]
=point2f(0
, static_cast<
float
>
(srcimage.rows -1)
);dst********[0]
=point2f
(static_cast<
float
>
(srcimage.cols*
0.0)
, static_cast<
float
>
(srcimage.rows*
0.33))
; dst********[1]
=point2f
(static_cast<
float
>
(srcimage.cols*
0.65
), static_cast<
float
>
(srcimage.rows*
0.35))
; dst********[2]
=point2f
(static_cast<
float
>
(srcimage.cols*
0.15
), static_cast<
float
>
(srcimage.rows*
0.6));
//再求仿射變換
warpmat =
getaffinetransform
(src********, dst********)
;//再對原影象應用剛剛的仿射變換
warpaffine
(srcimage, dstimage_warp, warpmat, dstimage_warp.
size()
);//再對影象進行縮放和旋轉,也就是繞影象中點順時針旋轉50度縮放因子為0.6的旋轉舉證
point center =
point
(dstimage_warp.cols /
2, dstimage_warp.rows /2)
;double angle =
-30.0
;double scale =
0.8;
//按照上面的引數進行旋轉
rotmat =
getrotationmatrix2d
(center, angle, scale)
;//再對縮放過的影象進行旋轉
warpaffine
(dstimage_warp, dstimage_warp_rotate, rotmat, dstimage_warp.
size()
);//再開始顯示結果
imshow
(window_name1, srcimage)
;imshow
(window_name2, dstimage_warp)
;imshow
(window_name3, dstimage_warp_rotate)
;waitkey(0
);return0;
}//再寫一下showhelptext函式
static
void
showhelptext()
2.直方圖均衡化 OpenCv3程式設計學習一
之前學習的時候有裝過opencv,版本是3.4.而對應的visual studio是2017版本。所以直接開始建立了控制台專案,命名為2020.620.放在了d盤的vs opencvdemo 配置是vc15 大部分參考自 需要注意的是 首先關於的路徑名,可以是相對路徑,也就是存放在當前目錄下 也就是...
OpenCv3程式設計學習六
dft 函式,就是對一維或者二維陣列進行正向或反向離散傅利葉變化,第乙個和第二個引數分別是輸入和輸出,第三個引數是轉換型別,第四個引數是選擇影象的行數。getoptimaldftsize 函式是返回dft的最優尺寸大小,只有乙個代表向量尺寸的引數。copymakerborder 函式的作用是擴充影象...
OpenCv3程式設計學習十二
直方圖均衡化 這就是通過拉伸畫素強度分布範圍來增強影象對比度的一種方法。但是均衡化處理後的影象只能是近似均勻分布,均衡化影象的動態範圍擴大了。本質就是擴大量化間隔同時減少了量化級別,所以一些灰度不同的畫素可能會變的相同,最重要的是,均衡化後的如果再對其均衡化,則不會有任何變化 equalizehis...