opencv实践::直线检测
问题描述
寻找英语试卷填空题的下划线,这个对后期的切图与自动 识别都比较重要。
解决思路
方法: 通过图像形态学操作来寻找直线,霍夫获取位置信息与显示。
#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实践::直线检测的更多相关文章
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- 14、OpenCV Python 直线检测
__author__ = "WSX" import cv2 as cv import numpy as np #-----------------霍夫变换------------- ...
- opencv直线检测在c#、Android和ios下的实现方法
opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...
- Python+OpenCV图像处理(十四)—— 直线检测
简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...
- opencv学习笔记霍夫变换——直线检测
参考大佬博文:blog.csdn.net/jia20003/article/details/7724530 lps-683.iteye.com/blog/2254368 openCV里有两个函数(比较 ...
- opencv:霍夫直线检测
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- 【CImg】霍夫变换——直线检测
霍夫变换——直线检测 考古debug,其实很久之前就解决的bug......一直忘记过来改文章....欸 =============================原文================ ...
- opencv车道线检测
opencv车道线检测 完成的功能 图像裁剪:通过设定图像ROI区域,拷贝图像获得裁剪图像 反透视变换:用的是老师给的视频,没有对应的变换矩阵.所以建立二维坐标,通过四点映射的方法计算矩阵,进行反透视 ...
- python实现直线检测
目录: (一)原理 (二)代码(标准霍夫线变换,统计概率霍夫线变换) (一)原理 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也 ...
随机推荐
- 学习数据库SQL语句2
2018年11月15日 下午 —————————————————————————————————————————————————————————————————————————————————— 1 ...
- 词义消除歧义NLP项目实验
词义消除歧义NLP项目实验 本项目主要使用https://github.com/alvations/pywsd 中的pywsd库来实现词义消除歧义 目前,该库一部分已经移植到了nltk中,为了获得更好 ...
- 在wxml中直接写js代码(wxs)
我们在h5开发中,很多时候要在html中写到js代码,这个很容易实现.但是在微信小程序开发中,是不能直接在wxml中写js代码的,因此就有了wxs.在wxml中用wxs代码,有以下几种方式(在小程序文 ...
- Java 基础篇之编程基础
基本数据类型 java 是强类型语言,在 java 中存储的数据都是有类型的,而且必须在编译时就确定其类型. 基本数据类型变量存储的是数据本身,而引用类型变量存的是数据的空间地址. 基本类型转换 自动 ...
- Redis连接池-Java代码
1.JedisUtil类 2.测试类 3.测试日志(模拟出现竞争情况) import org.apache.log4j.Logger; import redis.clients.jedis.Jedis ...
- 配置eclipse编写html/js/css/jsp/java时自动提示
配置eclipse编写html/js/css/jsp/java时自动提示步骤: 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修 ...
- SpringBoot -> @Import使用
@Import 注解出自spring-context包中 package org.springframework.context.annotation; import java.lang.annota ...
- redis实践 —— redisReply简析
redisReply 定义如下: /* This is the reply object returned by redisCommand() */ typedef struct redisReply ...
- http转换为https
1.下载ssl 证数 百度ssl 证数都有 其中以便宜ssl为例子 注册登陆 选择免费版 可以使用3个月: 申请过程中需要检测该域名是否为本人所有 ,所以邮箱检测或者域名配置 很简单检测就好了: 验证 ...
- JavaScript设计模式——原型模式
原型模式: 原型模式是指原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象,是一种用来创建对象的模式,也就是创建一个对象作为另一个对象的prototype属性: prototype警告:学习了 ...