opencv學習之core模組核心功能2

2021-09-26 13:19:17 字數 4061 閱讀 5281

線性混合操作也是一種典型的二元(兩個輸入)的 畫素操作

#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...