opencv 漫水填充

2021-08-19 03:31:40 字數 2338 閱讀 8449

一、話說漫水填充

漫水填充是一種用特定的顏色填充連通區域,通過設定可連通畫素的上下限以及連通方式達到不同的填充效果的方法。漫水填充經常用來標記或者是分離影象的一部分,以便對其進行進一步處理貨分析,也可以用來從輸入影象獲取掩碼區域,掩碼會加速處理過程,或者只處理指定的畫素點,操作的結果總是某個連續的區域。他的基本作用有兩個:1、

標記或分離目標區域;

2、獲取掩碼區

域,只處理掩碼指定的畫素點,加速處理過程。

二、兩個不同的版本

1.不帶mask版f

loodfill(inputoutputarray image,1/3通道8位或浮點影象

point seedpoint,種子點,起始點

scalar newval,指定顏色

rect* rect=0,設定重繪區域的最小邊界矩形

scalar lodiff=scalar(),當前觀察象素值與其部件領域象素或者待加入該部件的種子象素之負差(lower difference)的最大值。低於這個差距的不屬於重繪區域

scalar updiff=scalar(),當前觀察象素值與其部件領域象素或者待加入該部件的種子象素之正差(upper difference)的最大值。高於這個差距的不屬於重繪區域

int flags=4);

對於單通道圖、8點陣圖,flag可取4鄰域(預設)或8鄰域

對於高於8位的圖,flag可以取0或下面的開關選項的組合:

floodfill_fixed_range - 如果設定,則考慮當前畫素與種子畫素之間的差,否則考慮當前畫素與其相鄰畫素的差。(範圍是浮點數).

floodfill_mask_only - 如果設定,函式不填充原始影象(忽略newval), 只填充掩模影象 (這種情況下 mask 必須是非空的).

2.帶mask版

floodfill(inputoutputarray image, inputoutputarray mask, point seedpoint, scalar newval, rect* rect=0, scalar lodiff=scalar(), scalar updiff=scalar(), int flags=4);

flags組合可以用「|」或符號

8|floodfill_fixed_range|floodfill_mask_only|(38<<8)

意思是8鄰域填充固定範圍的掩模影象,填充值為38.  38<<8意思是38左移8位

mask圖長和寬上都比輸入影象 image 大兩個象素點。

mat mask;

mask.create(src.rows + 2, src.cols + 2, cv_8uc1);初始化掩模mask

mask = scalar::all(0);//所有畫素為0

imshow("mask",mask);

三、實驗
int main()

好了,以上就是今天的內容,比較簡單,希望更多的小夥伴一起學習,**。

opencv漫水填充演算法

使用特定的顏色填充連通區域,通過設定可連通畫素的上下限以及連通方式達到不同的填充效果。int floodfill inputoutputarray image,point seedpoint,scalar newval,rect rect 0,scalar lodiff scalar scalar ...

Opencv學習 漫水填充演算法

一 漫水填充定義 漫水填充 flood fill 法是用特定的顏色填充聯通區域,通過設定可聯通畫素的上下限以及聯通方式來達到不同的填充效果的方法。主要用來標記和分離影象的一部分以便對其進一步處理和分析。也可以用來從輸入影象獲取掩碼區域,掩碼會加快處理過程,或只處理掩碼指定的畫素點。所謂漫水填充,簡單...

OpenCV實現漫水填充(待完善)

opencv實現漫水填充 待完善 定理 用一種特定的顏色填充連通區域,通過設定可聯通畫素的上下限以及連通方式來達到不同的填充效果的方法。自動選中和種子相連的區域,接著將該區域替換成指定的顏色。也可以用來從輸入影象獲取掩碼區域,掩碼區域會加速區域,或只處理掩碼指定的畫素點。函式呼叫 int flood...