標籤:

OpenCV(C++版)輪廓(contour)檢測

findContours和drawContours的例子:來自

#include "stdafx.h"#include <opencv2/opencv.hpp>

using namespace std;using namespace cv;

int main( int argc, char** argv ){ Mat src; // the first command-line parameter must be a filename of the binary (black-n-white) image if( argc != 2 || !(src=imread(argv[1], 0)).data) return -1;

Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);

src = src > 50; namedWindow( "Source", 1 ); imshow( "Source", src );

vector<vector<Point> > contours; vector<Vec4i> hierarchy;

findContours( src, contours, hierarchy, CV_RETR_CCOMP , CV_CHAIN_APPROX_NONE );

// iterate through all the top-level contours,draw each connected component with its own random color int idx = 0; for( ; idx >= 0; idx = hierarchy[idx][0] ) { Scalar color( rand()&255, rand()&255, rand()&255 ); drawContours( dst, contours, idx, color, CV_FILLED, 8, hierarchy ); }

namedWindow( "Components", 1 ); imshow( "Components", dst ); waitKey(0);

}

〉按輪廓線,提取圖像中閉合區域:findContours,對應的C介面為cvFindContours。

> 加入canny邊緣檢測,可以得到另一組結果。

結果:

推薦閱讀:

常見的LED燈具不同檢測標準介紹
肺癌原發病灶、轉移病灶、血液的基因檢測結果一樣嗎?
【僅是存檔】三鹿集團:1100道檢測關的背後 - 多做少說 | 呂勝春的博客 | 博聯社
銀行卡防盜八項注意 三種方式檢測賬戶被盜刷
八成癌症確診就是中晚期癌症早早期檢測項目啟動

TAG:OpenCV | 檢測 |