OpenCV學習筆記之七

2021-07-10 06:55:32 字數 2695 閱讀 7202

iplimage* cvloadimage( const char* filename, int flags=cv_load_image_color );

第二個引數 flags 的選擇有三個,cv_load_image_color  預設(1),以三通道彩色影象顯示。原圖若是gary,原來的某點畫素值,複製到bgr中

cv_load_image_grayscale  (0)以單通道影象顯示,載入。相當於做了cvcvtcolor  bgr2gary。

cv_load_image_anycolor  (-1)按照影象本身的通道數來顯示。

是opencv裡的顏色空間轉換函式

void cvcvtcolor( const cvarr* src, cvarr* dst, int code );

注意,無返回值!

src 輸入影象

dst 輸出影象

code 轉化型別,可選則引數有 cv_bgr2gray 注意匹配影象的通道數(3通轉1通)

cv_bgr2hsv 對於8點陣圖,需要將rgb值歸一化到0-1之間。這樣得到hsv圖中的h範圍才是0-360,s和v的範圍是0-1。

等。canny演算法,邊緣檢測。

void cvcanny( const cvarr* image,cvarr* edges,double threshold1,double threshold2, int aperture_size=3 );

注意,無返回值!

image 輸入要處理的圖,單通道。多通道要使用cvcvtcolor轉化

edges 輸出處理結果,單通道。

threshold1 (50)

threshold2  (150)這兩個閾值當中的小閾值用來控制邊緣連線,大的閾值用來控制強邊緣的初始分割。一般可以取()中值。

演算法原理:

void cvthreshold

( const cvarr* src,

cvarr* dst,

double threshold,

double max_value,

int threshold_type );

對單通道陣列

應用固定閾值操作

src  輸入影象 ,單通道,8-bit of 32-bit 浮點數

dst  輸出影象,必須與 src 的型別一致

double threshold  閾值

max_value  

threshold_type  的可選項:cv_thresh_binary   :if  src(x,y)>threshold ,

dst(x,y) = max_value   結果是二值圖

esle

, dst(x,y)=0  

cv_thresh_binary_inv:ifsrc(x,y)>threshold,dst(x,y) = 0

結果是二值圖

else,dst(x,y) = max_value

cv_thresh_trunc: if src(x,y)>threshold,dst(x,y) = max_value 結果是灰度圖

else,dst(x,y) = src(x,y)

cv_thresh_tozero: if src(x,y)>threshold,dst(x,y) = src(x,y) 

else,dst(x,y) = 0

cv_thresh_tozero_inv: if src(x,y)>threshold,dst(x,y) = 0

else,dst(x,y) = src(x,y).

計算兩個陣列差的絕對值

void cvabsdiff( const cvarr* src1, const cvarr* src2, cvarr* dst );

src  輸入影象 ,單通道,8-bit of 32-bit 浮點數

dst  輸出影象,必須與 src 的型別一致

dst = abs( src1 - src2 ).

所有陣列

必須有相同的資料型別

or 相同的大小(或roi大小)

//可以用於簡單的背景減除

cvabsdiff(src,src_background,dst);

cvthreshold(dst,dst,100,255,cv_thresh_binary);//和背景圖比較,有超過100的畫素值跳變就認為是前景,未達到100認為是背景。

void cvsmooth( const cvarr* src, cvarr* dst, 

int smoothtype=cv_gaussian,   

int param1=3, int param2=0, double param3=0 ,double param4=0); 

用於各種方式的濾波,型別由smoothtype決定

src:輸入影象 

dst:輸出影象. 

smoothtype: 平滑型別選擇   cv_blur_no_scale  

int cvnamedwindow( const char* name, int flags=cv_window_autosize );

cv_window_autosize ( 1 ) : window更具攝像頭返回影象的大小自動設定視窗大小,不可滑鼠拉動改變。

( 0 ) : 可以拖動滑鼠改變視窗的大小,影象適應視窗大小。

for(y=0;y<5;++y)

}

OpenCV學習筆記(七)之Canny邊緣檢測

老規矩 妹妹鎮樓 灰度轉換 cvtcolor 計算梯度 sobel scharr 非最大訊號抑制 高低閾值輸出二值影象 t1,t2為閾值,凡是高於t2的都保留,凡是低於t1的都丟棄,從高於t2的畫素出發,凡是大於t1且相互連線的都保留。最終得到乙個輸出二值影象。推薦的高低閾值比值為t2 t1 3 1...

OpenCV學習筆記七 關於Mat類

1 建立乙個mat物件僅僅是建立了資訊頭部分,並沒有複製影象矩陣,而是通過矩陣指標指向某一位址而實現。eg mat a,c 僅建立資訊頭部分 mat b a 使用拷貝建構函式 c a 賦值運算子 以上建立的所有mat物件最終都指向同乙個也是唯一的乙個資料矩陣。雖然資訊頭不同,但是通過任何乙個物件所做...

OpenCV學習筆記之IplImage

首先學習下各引數的用法,以後慢慢完善 一 origin 在使用opencv顯示影象時會出現影象倒立的情況,iplimage的origin屬性有關係。origin為0表示頂左結構,即影象的原點是左上角,如果為1為左下角。一般從硬碟讀入的或者通過cvcreateimage方法建立的iplimage預設的...