【開發日記】OpenCV表格應用-持續更新

昨年寫的OpenCV處理表格的東西搞丟了,這幾天想起來需要繼續做完,翻遍了硬盤還是沒找到代碼,今天呆在電腦前,還是覺得應該有始有終,再做一個吧,我不知道這次我能堅持多久。2020年4月29日 00:00:49


目的:使用OpenCV獲取到表格主體輪廓,並用紅線畫出輪廓。

爲了方便後續桌面開發,暫時用C#作爲編程語言。

//通過圖片框拿到Mat
Bitmap bi = new Bitmap(pictureBox1.Image);
Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bi);

//另外再複製一個,用於繪畫
Mat mat2 = mat.Clone();

後續不同操作的例子:

開運算

//開運算
Mat kernel =  Cv2.GetStructuringElement(MorphShapes.Rect,new OpenCvSharp.Size(80,80));
Cv2.MorphologyEx(mat,mat2, MorphTypes.Open, kernel);
pictureBox1.Image = mat2.ToBitmap();

邊緣檢測

//進行邊緣檢測
Cv2.Canny(mat, mat2, 194, 105,3);
pictureBox1.Image = mat2.ToBitmap();

 

經過了邊緣檢測後的霍夫變換取直線

//進行邊緣檢測
Cv2.Canny(mat, mat2, 194, 105,3);
//創建一個純黑背景的Mat
Mat black = new Mat();
black.Create(mat.Height, mat.Width, MatType.CV_8UC3);
//霍夫變換取直線
var p = Cv2.HoughLinesP(mat2, 1,Math.PI/180,100,50,100);
foreach (var item in p) {
    Cv2.Line(black, item.P1, item.P2,Scalar.Red);
}  
pictureBox1.Image = black.ToBitmap();

 

 到這裏感覺有那個意思了,但是雜線還是太多了,遠沒達到理想效果,還需要繼續處理,分析這些比較集中的豎線,看得出是因爲表格上的內容比較多,所以要做形態學腐蝕操作,具體還需研究,今天更在這裏。2020年4月29日 00:23:49

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章