问题描述
  寻找英语试卷填空题的下划线,这个对后期的切图与自动 识别都比较重要。
 解决思路 
  方法: 通过图像形态学操作来寻找直线,霍夫获取位置信息与显示。

#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h> using namespace cv;
using namespace std; #define IMAGE_PATH "D:/case3.png"
int max_count = ;
int threshold_value = ;
const char* output_lines = "Hough Lines"; Mat src, roiImage, dst;
void morhpologyLines(int, void*);
int main(int argc, char** argv) {
src = imread(IMAGE_PATH, IMREAD_GRAYSCALE);
if (src.empty()) {
printf("could not load image...\n");
return -;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
namedWindow(output_lines, CV_WINDOW_AUTOSIZE);
Rect roi = Rect(, , src.cols - , src.rows - );
roiImage = src(roi);
//imshow("ROI image", roiImage); morhpologyLines(, ); waitKey();
return ;
} void morhpologyLines(int, void*) {
// 二值化
Mat binaryImage, morhpImage;
// 图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。
threshold(roiImage, binaryImage, , , THRESH_BINARY_INV | THRESH_OTSU);
//imshow("binary", binaryImage); // 定义一个结构元素 宽40像素,高1像素
Mat kernel = getStructuringElement(MORPH_RECT, Size(, ), Point(-, -));
morphologyEx(binaryImage, morhpImage, MORPH_OPEN, kernel, Point(-, -));
//imshow("morphology result", morhpImage); // 膨胀强化直线
kernel = getStructuringElement(MORPH_RECT, Size(, ), Point(-, -));
dilate(morhpImage, morhpImage, kernel);
//imshow("morphology lines", morhpImage); // 霍夫直线标定
vector<Vec4i> lines;
HoughLinesP(morhpImage, lines, , CV_PI / 180.0, , 20.0, );
Mat resultImage = roiImage.clone();
cvtColor(resultImage, resultImage, COLOR_GRAY2BGR);
for (size_t t = ; t < lines.size(); t++) {
Vec4i ln = lines[t];
line(resultImage, Point(ln[], ln[]), Point(ln[], ln[]), Scalar(, , ), , , );
}
imshow(output_lines, resultImage);
return;
}

最新文章

  1. 几年前做家教写的C教程(之五专讲结构体与文件操作)
  2. MFC 修改各种控件的背景颜色、字颜色和字体
  3. 瘋子C++笔记
  4. jboss developers studio 快速创建 spring mvc 项目
  5. Android Activity的加载模式和onActivityResult方法之间的冲突
  6. 解决lScrollView嵌套ListView只显示一行的问题,listvie显示全部的item
  7. MapReduce 2简介
  8. jQuery基础之(二)jQuery中的$
  9. 如何开启SQL Server 2008的远程联机
  10. 浅谈jquery选择器
  11. C++:undefined reference to vtable 原因与解决办法[转]
  12. apache-tomcat-7 设置最大上传.war文件大小[zhuan]
  13. Angular和Spring Boot一起做个项目
  14. mac下利用Breakpad的dump文件进行调试
  15. TP5创建动态数据表
  16. 【Loj116】有源汇有上下界最大流(网络流)
  17. input file 上传 判断文件类型、路径是否为空
  18. webgl,threejs教程、笔记
  19. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)
  20. hdu 4055 Number String

热门文章

  1. [SpringBoot——Web开发(使用Thymeleaf模板引擎)]
  2. springboot之全局处理异常封装
  3. node连接数据库
  4. linux双网卡绑定为逻辑网卡
  5. selenium-03-常用操作
  6. Docker service endpoint with name xxx already exist问题
  7. 1.html基础知识
  8. java基础之缓存:session、cookie和cache的区别
  9. 前沿科技-混合现实(MR)远程协作辅助工具:微缩虚拟形象Mini-Me
  10. 魔鬼在细节,理解Java并发底层之AQS实现