影象操作
獲取畫素值:
單通道—
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 畫素...