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

#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;
}

opencv实践::直线检测的更多相关文章

  1. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

  2. 14、OpenCV Python 直线检测

    __author__ = "WSX" import cv2 as cv import numpy as np #-----------------霍夫变换------------- ...

  3. opencv直线检测在c#、Android和ios下的实现方法

    opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...

  4. Python+OpenCV图像处理(十四)—— 直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  5. opencv学习笔记霍夫变换——直线检测

    参考大佬博文:blog.csdn.net/jia20003/article/details/7724530 lps-683.iteye.com/blog/2254368 openCV里有两个函数(比较 ...

  6. opencv:霍夫直线检测

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  7. 【CImg】霍夫变换——直线检测

    霍夫变换——直线检测 考古debug,其实很久之前就解决的bug......一直忘记过来改文章....欸 =============================原文================ ...

  8. opencv车道线检测

    opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...

  9. python实现直线检测

    目录: (一)原理 (二)代码(标准霍夫线变换,统计概率霍夫线变换) (一)原理 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也 ...

随机推荐

  1. Http 协议简略

    用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个http请求,服务器端程序会接受这个请求,并对请求进行相应的处理,然后发送一个回应,浏览器收到回应,再把回应的内容显示到页面,这种请求—相应的 ...

  2. response中文乱码问题

    1.要确定I代码的编码格式为UTF-8 2.乱码原因:浏览器和服务器的编码格式不同: 服务器的默认编码为:ISO-8859-1,如果浏览器的编码不是ISO-8859-1,就会出现乱码: public ...

  3. Java并发synchronized详解

    今天和大家一起学习下并发编程,先举一个简单的生活例子,我们去医院或者银行排队叫号,那每个工作人员之间如何保证不会叫重号呢? public class TicketDemo extends Thread ...

  4. Linux之文件与目录管理

    加油!

  5. Tomcat 应用中并行流带来的类加载问题

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ作者:肖铭轩.王道环 随着 Java8 的不断流行, ...

  6. 微服务SpringCloud之注册中心Consul

    Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发 ...

  7. Maven 梳理 -scope属性

    在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: * compile,缺省值,适用于所有阶 ...

  8. 报表统计——java实现查询某年12个月数据,没数据补0

    一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.mapper层sql语句,返回统计好的月份与对应月份的数据. < ...

  9. rt.jar包添加源文件只需要关联到已安装对应jdk目录下source.zip源码文件即可

    项目中配置的JRE System Libriry下的rt.jar包,需要关联源文件时候,只需要点击“Attach Source...“按钮,选择"External File..." ...

  10. 【干货总结】:可能是史上最全的MySQL和PGSQL对比材料

    [干货总结]:可能是史上最全的MySQL和PGSQL的对比材料 运维了MySQL和PGSQL已经有一段时间了,最近接到一个数据库选型需求,于是便开始收集资料整理了一下,然后就有了下面的对比表 关键词: ...