線性混合操作也是一種典型的二元(兩個輸入)的 畫素操作
#include
#include
#include
using
namespace cv;
intmain
(int argc,
char
** ar** )
/// 載入影象,必須相同型別和大小。
;//計算如下圖,0.0為gamma
影象處理運算元是帶有一幅或多幅輸入影象、產生一幅輸出影象的函式。影象變換可分為以下兩種:點運算元(畫素變換)與鄰域(基於區域的)運算元。
5.1 畫素變換
在這一類影象處理變換中,僅僅根據輸入畫素值(有時可加上某些全域性資訊或引數)計算相應的輸出畫素值。這類運算元包括 亮度和對比度調整 ,以及顏色校正和變換。
5.2亮度和對比度調整
兩種常用的點過程(即點運算元),是用常數對點進行 乘法和加法運算:
兩個引數 alpha > 0和 beta一般稱作 增益和偏置引數。
#include
#include
#include
using
namespace std;
using
namespace cv;
double alpha;
/**< 控制對比度 */
int beta;
/**< 控制亮度 */
intmain
(int argc,
char
** ar** )}}
/// 建立視窗
namedwindow
("original image",1
);namedwindow
("new image",1
);/// 顯示影象
imshow
("original image"
, image)
;imshow
("new image"
, new_image)
;/// 等待使用者按鍵
waitkey()
;return0;
}
可以不用 for迴圈來訪問每個畫素,而是直接採用下面這個命令
image.convertto(new_image, -1, alpha, beta);
第二個引數為type,是需要的輸出矩陣型別,或者更明確的,是輸出矩陣的深度,如果是負值(常用-1)則輸出矩陣和輸入矩陣型別相同;
次資料結構表示了由其影象座標 x和 y指定的2d點。可定義為:
point pt;
pt.x =10;
pt.y =8;
//或者
point pt =
point(10
,8);
scalar表示了具有4個元素的陣列。次型別在opencv中被大量用於傳遞畫素值。如果用不到第四個引數,則無需定義。
scalar
( a, b, c )
那麼定義的rgb顏色值為: red = c, green = b and blue = a
/// 視窗名字
char atom_window=
"drawing 1: atom"
;char rook_window=
"drawing 2: rook"
;/// 建立空全黑畫素的空影象
mat atom_image = mat::
zeros
( w, w, cv_8uc3 )
;mat rook_image = mat::
zeros
( w, w, cv_8uc3 )
;/// 1. 畫乙個簡單的原子。
/// 1.a. 建立橢圓.用 myellipse 和 myfilledcircle 來畫原子。
myellipse
( atom_image,90)
;myellipse
( atom_image,0)
;myellipse
( atom_image,45)
;myellipse
( atom_image,-45
);/// 1.b. 建立圓
myfilledcircle
( atom_image,
point
( w/
2.0, w/
2.0));
/// 2. 畫乙個賭棍
/// 2.a. 建立乙個凸多邊形
mypolygon
( rook_image )
;/// 2.b. 建立矩形
rectangle
( rook_image,
point(0
,7*w/8.0),
point
( w, w)
,scalar(0
,255
,255),
-1,8
);/// 2.c. 畫幾條直線
myline
( rook_image,
point(0
,15*w/16),
point
( w,
15*w/16)
);myline
( rook_image,
point
( w/4,
7*w/8)
,point
( w/
4, w ));
myline
( rook_image,
point
( w/2,
7*w/8)
,point
( w/
2, w ));
myline
( rook_image,
point(3
*w/4,7
*w/8),
point(3
*w/4
, w )
);
//函式的定義
void
myline
( mat img, point start, point end )
void
myellipse
( mat img,
double angle )
void
myfilledcircle
( mat img, point center )
rectangle
( rook_image,
point(0
,7*w/8.0),
//矩形兩個對角頂點
point
( w, w)
,scalar(0
,255
,255),
-1,8
);
學習筆記之 opencv的ML模組
之前開始學opencv的時候就看到opencv裡面有機器學習模組 machine learning,ml 但是一直以來跟著這麼多書籍學習都沒有發現有提及過 畢竟opencv是針對影象處理方面的,所以大部分書籍都以介紹影象處理方面的為主 無意中,在 opencv和visual studio影象識別應用...
qgis原始碼學習2之core模組的raster
由圖可以看出raster模組還是比較孤立的不依賴於其他的模組,第二個就選它了。1.qgsrasterresampler是乙個基類用來在不同的qimage中重新取樣。它的所有的成員函式都是虛函式。class qgsrasterresampler virtual void resample const ...
opencv3學習筆記(三) core元件
前面已經知道opencv主要由16個元件組成,由於core元件提供了最基本的資料結構,所以就從core元件入手,開始opencv3的研究。從opencv官網上可以看到,core元件主要由以下模組組成 basic structures c structures and operations conne...