1 #include <opencv2/opencv.hpp>
2 #include <iostream>
3 #include <math.h>
4
5 using namespace cv;
6 using namespace std;
7
8 int numRun = 0;
9 Rect rect;
10 bool init = false;
11 Mat src, image;
12 Mat mask, bgModel, fgModel;//mask,背景,前景
13 const char* winTitle = "input image";
14
15 void onMouse(int event, int x, int y, int flags, void* param);
16 void setROIMask();
17 void showImage();
18 void runGrabCut();
19 int main(int argc, char** argv)
25 maskreate(src.size(), CV_8UC1);
26 mask.setTo(Scalar::all(GC_BGD));
27
28 namedWindow(winTitle, CV_WINDOW_AUTOSIZE);//
29 setMouseCallback(winTitle, onMouse, 0);//设置鼠标反馈事件
30 imshow(winTitle, src);
31
32 while (true)
40 if ((int)c == 27)
43 }
44
45 waitKey(0);
46 return 0;
47 }
48
49 void showImage() else
58 imwrite("tx2.png",result);
59 rectangle(result, rect, Scalar(0, 0, 255), 2, 8);//在result上绘制红色矩形框rect
60 imshow(winTitle, result);
61 }
62
void setROIMask()
75
76 //鼠标事件函数
77 void onMouse(int event, int x, int y, int flags, void* param)
93 break;
94 case EVENT_LBUTTONUP://鼠标左键松开
95 if (rect.width > 1 && rect.height > 1)
99 break;
100 default:
101 break;
102 }
103 }
104
105 //运行GrabCut函数
106 void runGrabCut()
110
111 if (init)
117 }
上一篇:ITK 实例7 置信连接算法对脑部MHA文件进行三维分割
下一篇:ITK 实例16 阈值水平集算法对脑部PNG图像进行二维分割
OpenCV









