利用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...