目標:獲取試卷中的填空線位置,為後續的自動判卷進行定位。
方法: 形態學處理+霍夫變換。
待處理影象:
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 基於上述方法二的演算法步驟 閾值化 二值化 構建結構元素,消除字母 膨脹處理,讓直線更加明顯 霍夫直線檢測 記錄直線位置。說明 ...