1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv;
Mat img; int threshval = 160;
static void (int, void*) { Mat bw = threshval < 128 ? (img < threshval):(img > threshval); vector<vector<Point>> contours; vector<Vec4i> hierarchy;
findContours(bw, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); Mat dst = Mat::zeros(img.size(), CV_8UC3); if(!contours.empty() && !hierarchy.empty()) { 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); } } imshow("Connected Components", dst); }
int main() { img = imread("img.jpg"); if(!img.data) { printf("Oh, no, img失败了 n"); return -1; } namedWindow("Image", 1); imshow("Image", img); namedWindow("Connected Components", 1); createTrackbar("Threshold", "Connected Components", &threshval, 255, on_trackbar); on_trackbar(threshval, 0); waitKey(0); return 0; }
|
近期评论