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