1 #include <opencv2/opencv.hpp>
2 #include <iostream>
3
4 using namespace cv;
5 using namespace std;
6
7 Mat watershedCluster(Mat &image, int &numSegments);
8 //参数分别为分割后图像,分割块数,输入原图
9 void createDisplaySegments(Mat &segments, int numSegments, Mat &image);
10 int main(int argc, char** argv)
16 namedWindow("input image", CV_WINDOW_AUTOSIZE);
17 imshow("input image", src);
18
19 int numSegments;
20 Mat markers = watershedCluster(src, numSegments);
21 createDisplaySegments(markers, numSegments, src);
22 waitKey(0);
23 return 0;
24 }
25
26 Mat watershedCluster(Mat &image, int &numCp)
50
51 Mat markers(dist.size(), CV_32S);
52 markers = Scalar::all(0);
53 for (int i = 0; i < contours.size(); i++)
56 circle(markers, Point(5, 5), 3, Scalar(255), 1);
57
58 // 分水岭变换
59 watershed(image, markers);
60 numCp = contours.size();
61 return markers;
62 }
64 void createDisplaySegments(Mat &markers, int numSegments, Mat &image)
73
74 // 颜色填充与最终显示
75 Mat dst = Mat::zeros(markers.size(), CV_8UC3);
76 int index = 0;
77 for (int row = 0; row < markers.rows; row++)
83 else
86 }
87 }
88 imshow("分水岭图像分割演示",dst);
89 return;
90 }
上一篇:ITK 实例6 置信连接算法对脑部PNG图像进行二维分割
下一篇:ITK 实例15 测量主动轮廓算法对脑部PNG图像进行二维分割
OpenCV









