OpenCV空洞填充演算法

2021-09-22 22:21:13 字數 935 閱讀 2934

討論帖:

在matlab下,使用imfill可以很容易的完成孔洞填充操作,感覺這是乙個極為常用的方法,然而不知道為什麼opencv裡面卻沒有整合這個函式。在網上查了好多關於opencv下的孔洞填充方法,大部分使用輪廓查詢方法去做的,但對於這種方法,總感覺不是特別好。之前了解過岡薩雷斯那本書上的孔洞填充演算法,所以想著手重新寫乙個。這裡借鑑了岡薩雷斯書上的集合運算方法(並不完全一樣)

大致思路如下:

0, 設原影象為 a。

1, 首先a向外延展一到兩個畫素,並將值填充為背景色(0),標記為b。

2, 使用floodfill函式將b的大背景填充,填充值為前景色(255),種子點為(0,0)即可(步驟一可以確保(0,0)點位於大背景),標記為c。

3, 將填充好的影象裁剪為原影象大小(去掉延展區域),標記為d。

4, 將d取反與a相加即得填充的影象,e=a|(~d)。

// fillhole.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include "opencv2/imgproc/imgproc.hpp"

#pragma comment(lib,"opencv_core2410d.lib")

#pragma comment(lib,"opencv_highgui2410d.lib")

#pragma comment(lib,"opencv_imgproc2410d.lib")

using namespace std;

using namespace cv;

void fillhole(const mat srcbw, mat &dstbw)

int main()

opencv漫水填充演算法

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

Opencv學習 漫水填充演算法

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

基於輪廓填充連通區內部空洞

使用cvfindcontours函式與cvfillpoly填充連通區內部空洞 最近在做火焰識別專案時使用了一種火焰顏色模型分割疑似火焰區域,由於火焰內部溫度高 焰色偏白而被該模型捨棄,造成火焰連通區域內部有空洞,影響進一步的火焰判斷。通過查詢資料學習,我使用cvfindcontours 函式與cvf...