Opencv回顧 Roi和掩膜操作

2021-09-14 00:25:58 字數 2208 閱讀 7162

主要函式

構建roi的兩種方式

1)使用rect函式,指定矩形的左上角座標和矩形的長寬來定義乙個矩形區域作為roi區域;

rect rect(cx - 100, cy - 100, 200, 200);

//先建立乙個矩形

mat roi = src(rect);

2)利用range來指定感興趣的行和列的範圍,range是指從初始索引到終止索引的(不包括終止索引)的一段連續序列;

mat imageroi = image(range(y,y+imageroi.rows),range(x, x+image.roi.cols));

range()

1.range是opencv中新加入的乙個類,該類有兩個關鍵的變數start和end;

2.range物件可以用來表示矩陣的多個連續的行或者多個連續的列

3.range表示範圍從start到end,包含start,但不包含end;

4.range類還提供了乙個靜態方法all(),這個方法的作用如同matlab中的「:」,表示所有的行或者所有的列

例子:1.建立乙個單位陣

mat a= mat::eye(10, 10, cv_32s);

2.提取第1到3列(不包括3)

mat b = a(range::all(),range(1,3));

3.提取b的第5至9行(不包括9)

c= b(range(5,9),range::all());

對roi進行操作

//規劃處roi區域

mat roi = src(rect);

//類似於繫結roi

imshow("roi", roi);

mat image = roi.clone();

roi.setto(scalar(255, 0, 0));

//roi區域操作賦值 會對映到原影象中

//沒有拷貝之前,roi實際上共享******image的記憶體,只是改變了一下roi的mat中的一些成員變數:

掩膜操作

//通過hsv空間操作篩選出指定範圍內的畫素

imshow("mask", mask);

mat person;

bitwise_not(mask, mask);

//反轉 之前篩選出來確定出來的畫素範圍內的畫素是255 不在範圍內的是0

imshow("mask1", mask);

bitwise_and(src2, src2, person, mask);

// // 使用位「與」運算來疊加面具

imshow("person", person);

mat result = mat::zeros(src2.size(), src2.type());

result.setto(scalar(255, 0, 0));

//底色全是藍色

OpenCV學習 掩膜

影象掩膜,用選定的影象 圖形或物體,對處理的影象 全部或區域性 進行遮擋,來控制影象處理的區域或處理過程。掩膜是一種影象濾鏡的模板,實用掩膜經常處理的是遙感影象。當提取道路或者河流,或者房屋時,通過乙個n n的矩陣來對影象進行畫素過濾,然後將我們需要的地物或者標誌突出顯示出來。這個矩陣就是一種掩膜。...

opencv 掩膜操作

saturate cast函式保證運算後全部歸一化在0 255之間,注意上面row,col的移動範圍是很有講究的,的四個邊緣行因為沒有完整的上下左右所以省略,然而在實際應用掩膜操作時候並不用到自己這麼複雜的寫 opencv中提供了乙個filter2d函式。mat kernel mat 3,3 0,1...

opencv矩陣掩膜操作

include include using namespace std using namespace cv intmain imshow 操作前 src double t gettickcount 定義掩膜矩陣 卷積核 掩膜可以自己定義,不同矩陣效果不同 0 1 0 1 5 1 掩膜可以自己定義,...