OpenCV學習筆記二

2021-10-06 10:57:22 字數 3427 閱讀 1130

影象操作

獲取畫素值:

單通道—

gray_src.at

(row,col)

三通道—

int height = src.rows;

int width = src.cols;

int channels = src.

channels()

;for

(int row =

0; row < height; row++)}

}//作用同上,或操作

bitwise_not

(src,dst)

灰度影象—

img.at

(y,x)

=128

;

rgb三通道—

img.at

(y,x)[0

]=128;

img.at

(y,x)[1

]=128;

img.at

(y,x)[2

]=128;

空白影象賦值—

img =

scalar(0

);

roi選擇—

rect r(10

,10,100

,100);

mat smallimg =

img( r )

;

vec3b: 對應三通道的順序是blue,green,red的uchar型別資料

vec3f: 對應三通道的float型別資料

轉換:src.convertto(dst,cv_32f)

線性混合操作

api

//注意:兩張影象的大小型別必須一致

void cv:

addweighted

(inputarray src1,

//輸入影象mat-src1

double alpha,

//輸入影象src1的alpha值

inputarray src2,

//輸入影象mat-src2

double beta,

//輸入影象src2的alpha值

double gamma,

//gamma值

outarray dst,

//輸出混合影象

int dtype=-1

)//控制在0~255之間

dst(i)

=saturate

(src1

(i)*alpha +

src2

(i*beta)

+ gamma)

調整影象亮度與對比度

畫素變換-點操作

領域操作-區域

繪製–線

void

drawline()

繪製–矩形

void

drawrectangle()

繪製–圓

void

drawcircle()

繪製–橢圓

void

drawellipse()

繪製–多邊形

void

drawpolygon()

;int npt=

; scalar color =

scalar

(120

,250

,150);

fillpoly

(blank, ppts, npt,

1, color, line_8)

;}

模糊–原理:smooth/blur 卷積運算(線性濾波)

–作用:降噪處理

歸一化盒子濾波(均值濾波)

高斯濾波

均值模糊

//bodytype:影象卷積的時候邊界畫素,不能被卷積操作,

//opencv中預設的處理方法是:bordertypes.default。

//除此之外常用的還有

填充邊緣用指定的畫素值。

填充邊緣畫素用已知的邊緣畫素值。

用另一邊的畫素來補償填充。

blur

(mat src, mat dst,

size

(xradius,yradius)

,point(-

1,-1

),int bodytype)

高斯模糊

//size(x,y),x與y必須是   正奇數

gaussianblur

(mat src, mat dst,

size(11

,11), sigmax, sigmay)

;

中值濾波 一抑制椒鹽雜訊

當前畫素值替換為卷積和的中值

medianblur

(mat src,mat dest,ksize)

雙邊濾波

均值濾波–基於平均權重,無法克服邊緣畫素資訊確實;

高斯模糊–沒有考慮畫素值的不同,雖然部分克服該缺陷,但是無法完全避免

高斯雙邊模糊–邊緣保留的濾波方法,可以避免邊緣資訊丟失,保留影象輪廓不變

/**

* 15 計算的半徑,半徑之內的畫素都會被納入計算,如果提供-1則根據sigma space引數取值

* 150 sigma color 決定多少差值內畫素會被計算

* 3 sigma space 如果d的值大於0則生命無效,否則根據它來計算d值中值模糊的**/

bilateralfilter

(src,dest,d=15,

150,

3)

opencv學習筆記(二)

任何影象處理演算法,都是從操作每個畫素開始的。即使你不會使用opencv提供的各種影象處理函式,只要你了解影象處理演算法的基本原理,也可以寫出具有相同功能的程式。在opencv中,提供了種訪問每個畫素的方法 使用at方法 使用迭代器 使用指標。這三種方法在訪問速度上略有差異。debug模式下,這種差...

opencv學習筆記(二)

1.畫素讀寫和修改操作 讀乙個gray畫素點的畫素值 cv 8uc1 scalar intensity img.at y,x 或者scalar intensity img.at point x,y 讀乙個多通道畫素點的畫素值 vec3f intensity img.at y,x float blue...

opencv學習筆記 二 操作畫素

第二章 操作畫素 2.1引言 灰度影象畫素由8位無符號數來表示,0表示黑色,255表示白色。彩色影象 rgb 畫素由三個8位的無符號數來表示,儲存方式為三元數 b,g,r 2.2訪問畫素值 mat類有若干成員和成員函式來獲取影象的屬性 成員cols和rows表示 寬和高 列和行 成員函式 at 畫素...