opencv检测直线方法——形态学方法
来源:互联网 发布:log4j flume源码 编辑:程序博客网 时间:2024/05/29 17:46
在阅读文献中,偶然发现使用使用形态学方法也可以检测直线,故做实验并记录。
使用该方法,需要定义一个长度为L的结构元素element,其大小应足够大以保留图像中的字符笔划,然而又恰好能检测出图像中最短的表格线。
定义如下两个结构element用以检测图中水平、竖直的表格线:
Mat element1 = getStructuringElement(MORPH_RECT, Size(70, 1));// size的width应大于图像中的横向笔划
Mat element3 = getStructuringElement(MORPH_RECT, Size(1, 55));//size的height应大于图像中的竖直笔划
之后分别用以上结构元素对图像的水平以及竖直方向做闭运算以抹去水平或竖直表格线以外的细节:
morphologyEx(image, imageF1, MORPH_CLOSE, element1);
morphologyEx(image, imageF4, MORPH_CLOSE, element3);
下面附上整体代码:
#include "core/core.hpp" #include "highgui/highgui.hpp" #include "imgproc/imgproc.hpp" #include <iostream> using namespace std;using namespace cv;int main(){Mat image = imread("E:\\x.jpg", 1);Mat imageF1, imageF2, imageF3, imageF4, imageF5, imageF6, imageF7;cvtColor(image, image, CV_RGB2GRAY);namedWindow("原图");imshow("原图", image);Mat element1 = getStructuringElement(MORPH_RECT, Size(73, 1));Mat element3 = getStructuringElement(MORPH_RECT, Size(1, 80));morphologyEx(image, imageF1, MORPH_CLOSE, element1);threshold(imageF1, imageF2, 200, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);//自适应阈值morphologyEx(image, imageF4, MORPH_CLOSE, element3);threshold(imageF4, imageF5, 200, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);bitwise_or(imageF2, imageF5, imageF7);namedWindow("F1");imshow("F1", imageF1);namedWindow("F2");imshow("F2", imageF2);namedWindow("F4");imshow("F4", imageF4);namedWindow("F7");imshow("F7", imageF7);namedWindow("F5");imshow("F5", imageF5);waitKey(0);return 0;}实验结果如下:
记录内容如有不妥之处,望指正!
阅读全文
0 0
- opencv检测直线方法——形态学方法
- opencv检测直线方法——霍夫变换
- Opencv 图像处理——形态学方法
- 利用Opencv中的Houghline方法进行直线检测---python语言
- opencv检测直线——投影法
- Hough变换——直线检测(投票方法实现)
- opencv学习—形态学
- OpenCV-Python—形态学转换
- 初学opencv/形态学边缘检测
- 初学opencv/形态学拐角检测
- opencv 检测直线
- OpenCV检测直线
- Opencv 轮廓检测 直线
- OpenCV 直线检测
- 【opencv练习23 - 霍夫直线变换——直线检测】
- 有关opencv的学习(17)—形态学滤波器检测边缘和角点
- 用形态学的方法实现图像的角点检测
- opencv用形态学方法行计算文字角度
- 互斥锁-条件变量-信号量总结
- HDU3966 Aragorn's Story【树链剖分】
- sql server 存储过程 中处理json
- android 如何解析复杂的json数据
- 安卓获取adb设备名称
- opencv检测直线方法——形态学方法
- apollo简单使用
- Sping 学习笔记8——SSH框架中事务的声明与配置
- Ubuntu 16.4 默认安装的mysql 修改默认编码
- Android MediaPlayer的生命周期
- Android开发艺术探究(一):Activity的生命周期和启动模式
- js
- Python 面向对象
- 机器学习笔记:tensorflow实现卷积神经网络经典案例--识别手写数字