前段时间的工作流开发告一段落,现在总算有点闲,可以搞搞别的东西。
我们经理给我介绍了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;
}