前段時間的工作流開發告一段落,現在總算有點閑,可以搞搞別的東西。
我們經理給我介紹了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;
}
