前段時(shí)間的工作流開發(fā)告一段落,現(xiàn)在總算有點(diǎn)閑,可以搞搞別的東西。
我們經(jīng)理給我介紹了OpenCV這個(gè)東東,但是C++好多年沒寫了,而且安裝配置非常麻煩。不過幸虧有.net版本,于是拿來玩玩,希望能給我們的平臺(tái)添磚加瓦。
就從最基本的圖形繪制開始吧。
private IplImage drawImage;
private CvScalar color;
private int lineThickness;
public Form1()
{
InitializeComponent();
//先搞一個(gè)空白的圖片,作為畫布
drawImage = new IplImage(new CvSize(0, 480), BitDepth.F32, 3);
//定義一個(gè)顏色,那就綠色的吧。
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個(gè)點(diǎn)
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);
//先構(gòu)造一個(gè)矩形
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 "多邊形":
//設(shè)置多邊形的頂點(diǎn)
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;
}