opencv之獲取試卷中填空線段

2021-08-31 03:35:46 字數 1892 閱讀 6443

目標:獲取試卷中的填空線位置,為後續的自動判卷進行定位。

方法: 形態學處理+霍夫變換。

待處理影象:

1.假如直接對待處理影象進行霍夫直線檢測,效果如下:

可以看到,會存在檢測長度不足甚至漏檢的情況,效果很不好。

2.下面使用形態學先對進行處理後再結合霍夫變換,效果如下:

檢測效果明顯提公升。

具體操作流程及**:

1.操作流程:

(1)影象roi獲取

(2)影象二值化

(3)形態學處理:使用橫向直線結構體去除中非直線部分

(4)膨脹,得到效果更好的直線

(5)霍夫直線檢測並顯示到原圖中

2.實現**:

#include "stdafx.h"

#include#include#include "math.h"

using namespace std;

using namespace cv;

mat src, dst, roiimage;

char* input = "input image";

char* output = "output image";

void morhpologylines(int,void*);

int _tmain(int argc, _tchar* argv)

namedwindow(input, cv_window_autosize);

namedwindow(output, cv_window_autosize);

imshow(input, src);

rect roi = rect(10, 10, src.cols - 20, src.rows - 20);

roiimage = src(roi);

imshow("roi", roiimage);

morhpologylines(0, 0);

waitkey(0);

return 0;

}void morhpologylines(int, void*)

imshow(output, resultimg);

return;

}

總結:

houghlinesp() : 漸進概率hough變換,與houghlines()相似,但是有兩個重要的區別,第乙個是lines引數變為四通道(或者乙個vec4i型別的向量),四通道分別是找出的線段的兩個端點的座標,(x0,y0),(x1,y1)(按順序)。第二個重要的區別是最後兩個引數的含義,minlinelength設定了返回線段的最小長度,maxlinegap設定了共線線段間的最小間隔,防止演算法把他們連為一條線。

opencv例項之檢測試卷填空位置

檢測試卷填空題天空位置處的橫線位置,能找到位置,可為下一步計算機識別答案打下基礎 使用影象形態學操作尋找直線,利用霍夫變化獲取位置資訊與顯示,直接霍夫變換效果很差 include include include include using namespace std using namespace ...

一組語文試卷中的填空題

看一組語文 試卷中的填空 題 1.為 伊消得人憔悴 同學答 寬衣解 帶終不悔 正解為 衣 帶漸寬終 不悔 偶承 認這個是思想有問題 2.問渠哪得清如許,同學答 心中自有清泉在 正解為 唯有源 頭活水來 咱 還是和水粘了點 邊 3.何當共剪西窗燭,同學答 夫妻 對坐到天明 語文老師閱卷 時笑暈。後在課...

OpenCV實踐 獲取填空題的下劃線

1 基本兩種方式 先用canny檢測邊緣得到邊緣,再用霍夫直線檢測邊緣中的直線 效果差 先將影象通過形態學操作腐蝕掉字母,然後在通過霍夫檢測將直線展示出來。效果還可以 2 基於上述方法二的演算法步驟 閾值化 二值化 構建結構元素,消除字母 膨脹處理,讓直線更加明顯 霍夫直線檢測 記錄直線位置。說明 ...