OpenCV 刪除輪廓的方法(二)

2021-07-26 03:23:53 字數 1458 閱讀 7945

利用vector迭代器(iterator)遍歷內容,利用erase()函式刪除輪廓,實驗設計為小於20的輪廓被刪除,為了效果更明顯,在閾值分割前不做平滑和濾波的處理,**如下:

#include

#include

#include

#include

#include

using

namespace

std;

using

namespace cv;

int main()

else

} drawcontours(resultimage, contours, -1, scalar(255), cv_filled);

imshow("原圖",srcimage);

imshow("灰度",grayimage);

imshow("二值圖",thresholdimage);

imshow("結果圖",resultimage);

waitkey(0);

return

0;}

實驗結果:

可以看到,輪廓面積小於20個畫素的被刪除了。

補充一下drawcontours()函式:主要用於畫出影象的輪廓

cv_exports_w void drawcontours( inputoutputarray image,

inputarrayofarrays contours,

int contouridx,

const scalar& color,

int linetype=8,

inputarray hierarchy=noarray(),

int maxlevel=int_max,

point offset=point() );

其中第乙個引數image表示目標影象,

第二個引數contours表示輸入的輪廓組,每一組輪廓由點vector構成,

第三個引數contouridx指明畫第幾個輪廓,如果該引數為負值,則畫全部輪廓,

第四個引數color為輪廓的顏色,

第五個引數thickness為輪廓的線寬,如果為負值或cv_filled表示填充輪廓內部,

第六個引數linetype為線型,

第七個引數為輪廓結構資訊,

第八個引數為maxlevel

OpenCV輪廓特性(二)

1 輪廓的多邊形逼近 const void src seq,int header size,cvmemstorage storage,int method,method的取值上篇博文中介紹了 double parameter,表示逼近的精度 intrecursive 0 指定是否針對全部的輪廓,取0...

opencv學習筆記(二)尋找輪廓

opencv中使用findcontours函式來查詢輪廓,這個函式的原型為 1 void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierar 2 chy,int mode,int me...

OpenCV中的輪廓發現和輪廓繪製

實現 import cv2 import numpy as np 輪廓發現和輪廓繪製 img是一張與binary類似的二值圖,contours是list列表結構每個元素包含乙個邊沿資訊,heriachy是乙個矩陣,用處作者也未知,可以 contours,heriachy cv2.findcontou...