opencv(2) 處理畫素值

2022-08-12 10:45:11 字數 896 閱讀 1311

opencv中使用mat資料型別表示影象,這是類似int、float等傳統型別的一種opencv中定義的資料型別。

opencv常見的資料型別:

point:代表二維點,用於影象座標點。如point(20, 80).

scalar:表示4元素標量,常用於rgb顏色值,一般第四個引數用不到。

畫素是由顏色空間或通道數與資料型別來描述的。

opencv畫素的資料型別由表示式來表述:cv_abcd.

a:每個畫素佔多少位。

b:是否有符號。

c:型別前置碼。

d:通道數目。

如cv_8uc3表示每個畫素8位,無符號,因為無符號所以使用char表示畫素,每個畫素3個通道。

rgb三原色則使用cv_8uc3表示。

對於一幅彩色影象,如lena.jpg,通過預設mat image = imread("lena.jpg")讀取到的即為rgb的彩色影象。

彩色影象可通過mat的方法at獲得,如獲取y行x列的畫素值:image.at(y, x)[c]。其中c為rgb的通道索引。

對於一幅彩色影象來說,要對每一畫素進行處理時,要按照寬、高、通道數的迴圈來處理畫素,如:

1

for(int y = 0; y < image.rows; y++)

2for(int x = 0; x < image.cols; x++)

3for(int c = 0; c < image.channels(); c++)

4 new_images.at(y, x)[c] = 0;

注意:在處理畫素點的時候,rows對應於影象的高,即point的y;cols對應於影象的寬,即point的x。

而mat.at(y, x)中的y對應於rows,x對應於cols。

基本opencv2處理方法(二)

使用filter2d進行鄰域計算 void shape2d const mat image,mat result main函式呼叫 result.row 0 setto scalar 0 可以將result矩陣的第0行所有畫素全部設定為0。算術操作 opencv過載了很多操作符 你可以直接對它們進行...

基本opencv2處理方法(三) 基本濾波器

濾波是影象處理中的乙個基本操作。濾波去除影象中的雜訊,提取感興趣的特徵,允許影象重取樣。影象中的頻率和空域 空間域指用影象的灰度值來描述衣服影象,而頻域指用影象灰度值的變化來描述一幅影象。低通濾波器和高通濾波器的概念是在頻率中產生的。低通濾波器指去除影象中的高頻成分,而高通濾波器指去除影象中的低頻成...

openCV2 第二講 操作畫素

畫素是的基本元素,所以一張的內容可以用乙個畫素矩陣來表示。畫素矩陣的每個元素代表著乙個畫素,這個元素的型別視情況而定,可以是整型 cv 8u 或者浮點型 cv 32f 還有要注意的是乙個畫素它的通道數,例如,如果是灰度影象的話,它的通道數就是1。對於彩色影象來說的話,就是三個通道了,分別是r,g,b...