findContours函数用于在二值图中寻找轮廓。
findContours常与drawContours()函数配合使用
例如:
vector
findContours(img,contours,RETR_EXTERNAL,CHAIN_APPROX_NONE);
drawContour:
案例:
#include#include #include #include using namespace std; using namespace cv; //全局变量随机函数 RNG rng(12345); int main() { Mat src = imread("C:/Users/Administrator/Desktop/3.png"); if (src.empty()) { cout << "请检查图片是否存在..." << endl; return -1; } Mat grayimg; cvtColor(src, grayimg, COLOR_BGR2GRAY); blur(grayimg, grayimg, Size(5, 5)); namedWindow("src"); imshow("src", src); //初始化阈值 int thresh = 80, thresh_max = 255; Mat edgeimg; Canny(grayimg, edgeimg, thresh, thresh * 2, 3); //查找轮廓 vector >contours; vector hierarchy; findContours(edgeimg, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0)); //绘制轮廓 Mat drawimg = Mat::zeros(edgeimg.size(), CV_8UC3); for (int i = 0; i < contours.size(); i++) { //drawContours(drawimg, contours, i, Scalar::all(rng.uniform(0, 255)), 2, 8, hierarchy, 0, Point(0, 0)); drawContours(drawimg, contours, i, Scalar(122,160,144), 2, 8, hierarchy, 0, Point(0, 0)); } imshow("dstimg", drawimg); waitKey(0); return 0; }
结果展示:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)