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道檢測關的背後 - 多做少說 | 呂勝春的博客 | 博聯社
※銀行卡防盜八項注意 三種方式檢測賬戶被盜刷
※八成癌症確診就是中晚期癌症早早期檢測項目啟動