openCV任意幾何形狀感興趣區域(ROI)提取

2021-10-23 10:21:01 字數 1972 閱讀 4195

影象感興趣區域(roi)提取主要使用掩模來進行。掩模是二值影象,感興趣區域的掩模值設定為255,非感興趣區域的掩模值為0

獲取掩模的方法主要有兩種

方法一使用opencv中mat函式方法,呼叫mat(rect).setto方法設定掩模

mat mat::operator()( const rect& roi ) const

//呼叫mat(rect).setto方法

mask(rect).setto(255);

方法二在全為0的原始掩模中畫乙個封閉區域,使用漫水填充演算法填充封閉區域,將封閉區域的值都設定為255,實現掩模的提取

方法三將邊界轉換為輪廓,使用cv::drawcontours(mask, contours, -1, cv::scalar::all(255),cv_filled);

函式提取感興趣區域(roi)。

下文對矩形、橢圓,有方向的矩形,輪廓進行提取

使用方法一對矩形感興趣區域進行提取示例**如下:

#include#includeusing namespace cv;

//方法1,假如區域為長方形,使用mat 建構函式設定區域內的值為255

int main()

思路:

1)新建乙個值全為零的掩模影象(全是黑的,值為0)

2)在掩模影象上用白色畫出矩形的邊界(邊界值為255)

3)選取矩形的中心作為種子點,使用漫水填充演算法將矩形的內部填充為白色(255),最後得到掩模影象,使用掩模實現感興趣區域提取。

#include#includeusing namespace cv;

int main()

cvboxpoints(box, point); //計算二維盒子頂點

cvpoint pt[4];

for (i = 0; i<4; i++)

cvline(img, pt[0], pt[1], cvscalar(255), 2, 8, 0);

cvline(img, pt[1], pt[2], cvscalar(255), 2, 8, 0);

cvline(img, pt[2], pt[3], cvscalar(255), 2, 8, 0);

cvline(img, pt[3], pt[0], cvscalar(255), 2, 8, 0);

}//方法3.在掩模影象中畫旋轉的矩形(cvbox2d)、橢圓(rotatedrect)、圓,使用漫水填充演算法將幾何圖形內部的值設定為255

int main()

point* prepoint = (point*)cvgetseqelem(seq, 0);

point* lastpoint = (point*)cvgetseqelem(seq, seq->total - 1);

cv::line(grayimage, *prepoint, *lastpoint,cvscalar(255), 1, 8, 0);

for (int i = 1; itotal; i++)

}//方法4,假如區域邊界為輪廓,使用掩模影象中畫輪廓,使用漫水填充演算法將幾何圖形內部的值設定為255

int main()

(2)將邊界轉換為輪廓,使用cv::drawcontours(mask, contours, -1, cv::scalar::all(255),cv_filled);

函式提取感興趣區域(roi)

**如下:

#include #include#include#include using namespace cv;

using namespace std;

int main()

注意:drawcontours方法也是通用的提取感興趣區域的方法

openCV任意幾何形狀感興趣區域(ROI)提取

影象感興趣區域 roi 提取主要使用掩模來進行。掩模是二值影象,感興趣區域的掩模值設定為255,非感興趣區域的掩模值為0 獲取掩模的方法主要有兩種 方法一 使用opencv中mat函式方法,呼叫mat rect setto方法設定掩模 mat mat operator const rect roi ...

Opencv感興趣區處理

用roi來增加某範圍的畫素值 include include ch3 ex3 12 image name x y width height add int main iplimage src cvnamedwindow example3 12 pre cv window autosize cvnam...

opencv學習之感興趣區域(ROI)

新手學習就是苦啊,好多東西都要一點點的摸索,之前的經驗太少,積累太少,許多問題太簡單了,問別人都不好開口,誰讓自己太low了啊!那就自己折騰唄 今天看了opencv的矩陣和影象操作部分內容,這裡把這折騰的過程弄上來了 書上給了兩種獲得感興趣矩形區域的方式 乙個是直接用函式 cvsetimageroi...