案例1:文本上直线标记

Posted lzy820260594

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了案例1:文本上直线标记相关的知识,希望对你有一定的参考价值。

摘要:本文主要介绍了一种标记文本上直线的方法。

1、问题描述

将文本上图像上的直线标记出来,文本例子如下:

技术图片

 

2、方案描述

进行上面图像的直线检测,首先会想到霍夫直线检测,但是这样会将大部分的文字中包含的一些细小的直线也检测出来,并不是我们想要的结果,因此,必须要对图像进行预处理,具体步骤以及意义如下:

  • 二值化处理(为形态学操作打基础)
  • 形态学操作(将文字去除)
  • 进行直线检测
  • 将直线标记出来

3、代码示例

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<iostream>
 3 #include<opencv2/opencv.hpp>
 4 
 5 using namespace std;
 6 using namespace cv;
 7 
 8 const char *input = "输入图像";
 9 const char *output1 = "二值图像";
10 const char *output2 = "直线图像";
11 const char *output3 = "结果图像";
12 
13 Mat src, src_Threshould, dst, lsrc;
14 
15 int main(int arge, char**argv) {
16     src = imread("C:/Users/Lzy/Desktop/img/word.jpg");
17     lsrc = imread("C:/Users/Lzy/Desktop/img/word.jpg");
18     if (src.empty()) {
19         cout << "图像导入失败" << endl;
20         return -1;
21     }
22 
23     cvtColor(src, src, COLOR_BGR2GRAY);
24     namedWindow(input, WINDOW_AUTOSIZE);
25     imshow(input, src);
26 
27     adaptiveThreshold(~src,src_Threshould,255,ADAPTIVE_THRESH_MEAN_C,THRESH_BINARY,7,-2);
28     //medianBlur(src_Threshould,src_Threshould,3);
29     namedWindow(output1, WINDOW_AUTOSIZE);
30     imshow(output1,src_Threshould);
31 
32     Mat vline = getStructuringElement(MORPH_RECT,Size(1,src.rows/20),Point(-1,-1));
33     erode(src_Threshould, src_Threshould,vline);
34     dilate(src_Threshould,dst, vline);
35     namedWindow(output2, WINDOW_AUTOSIZE);
36     imshow(output2,dst);
37 
38     vector<Vec4f>lines;
39     HoughLinesP(dst, lines, 1, CV_PI / 180.0, 10, 0, 10);
40     for (int i = 0; i < lines.size(); i++) {
41         Vec4f linep = lines[i];
42         line(lsrc, Point(linep[0], linep[1]), Point(linep[2], linep[3]), Scalar(0,0,255), 3, LINE_AA);
43     }
44     imshow(output3, lsrc); 
45 
46     waitKey(0);
47     return 0;
48 }

4、操作结果

技术图片

 原图

技术图片 

 二值图

技术图片 

 形态学操作图

技术图片 

 检测标记图

以上是关于案例1:文本上直线标记的主要内容,如果未能解决你的问题,请参考以下文章

无法在对话框片段中的文本视图上设置文本

在案例演示中嵌入片段

请问mfc如何画出能被选中的直线

五大案例学习

pyhton—opencv直线检测(HoughLines)找到最长的一条线

pyhton—opencv直线检测(HoughLines)找到最长的一条线