前段时间的工作流开发告一段落,现在总算有点闲,可以搞搞别的东西。
我们经理给我介绍了OpenCV这个东东,但是C++好多年没写了,而且安装配置非常麻烦。不过幸亏有.net版本,于是拿来玩玩,希望能给我们的平台添砖加瓦。
就从最基本的图形绘制开始吧。
private IplImage drawImage; private CvScalar color; private int lineThickness; public Form1() { InitializeComponent(); //先搞一个空白的图片,作为画布 drawImage = new IplImage(new CvSize(640, 480), BitDepth.F32, 3); //定义一个颜色,那就绿色的吧。 color = new CvScalar(0, 255, 0); //线条的宽度 lineThickness = 2; } /// <summary> /// 基本图形绘制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button5_Click(object sender, EventArgs e) { switch (comboBox1.Text) { case "线段": int y = drawImage.Size.Height; int x = drawImage.Size.Width; //定义2个点 CvPoint topLeft = new CvPoint(0, 0); CvPoint bottomRight = new CvPoint(x, y); //划线 drawImage.Line(topLeft, bottomRight, color, lineThickness); break; case "矩形": y = drawImage.Size.Height; x = drawImage.Size.Width; //矩形的左上角 topLeft = new CvPoint(x / 3, y / 3); //矩形的大小 CvSize size = new CvSize(x / 3, y / 3); //先构造一个矩形 CvRect rect = new CvRect(topLeft, size); //把矩形画出来 drawImage.Rectangle(rect, color, lineThickness); break; case "圆形": //圆心 CvPoint center = new CvPoint(drawImage.Size.Width / 2, drawImage.Size.Height / 2); //半径 int r = 50; drawImage.Circle(center, r, color, 2); break; case "多边形": //设置多边形的顶点 CvPoint[] curve1 = new CvPoint[] { new CvPoint(10, 10), new CvPoint(10, 100), new CvPoint(100, 100), new CvPoint(200, 66), new CvPoint(100, 10) }; CvPoint[] curve2 = new CvPoint[] { new CvPoint(0, 0) }; CvPoint[][] curveArr = new CvPoint[2][] { curve1, curve2 }; //把多边形画出来,true表示封闭 drawImage.PolyLine(curveArr, true, color, lineThickness); break; default: break; } //把画好的图显示出来 pictureBoxIpl1.ImageIpl = drawImage; }