#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
Mat src, dst;
int main(void) {
src = imread("..\\lineDetect.jpg");
if (src.empty()) {
cout << "Loading image failed!" << endl;
return -;
} //图片大小不合适,先对图片进行缩放
resize(src, src, Size(src.rows/, src.cols/));
imshow("Sources image", src);
//图片的方向不对,用仿射变换调整至正确位置
//图片需要逆时针旋转90度
double angel = ;
Point center = Point(src.cols/,src.rows/);
//由于仿射变换后导致图像不全,用下面方法解决
Rect mask = RotatedRect(center, Size(src.cols,src.rows), angel).boundingRect();
//对仿射中心进行调整
Mat h = getRotationMatrix2D(center, angel, );
h.at<double>(, ) += mask.width / - center.x;
h.at<double>(, ) += mask.height / - center.y;
//获取仿射矩阵
Mat temp;
warpAffine(src, temp, h ,Size(src.rows,src.cols),,,Scalar(,,));
copyTo(temp, dst, Mat()); Mat gray;
cvtColor(temp, gray, COLOR_BGR2GRAY);
//反向二值化图像
Mat binary;
threshold(gray, binary, ,, THRESH_BINARY_INV);
//通过开操作消除文字,保留直线
Mat kernel = getStructuringElement(MORPH_RECT, Size(, ));
morphologyEx(binary, binary, MORPH_OPEN, kernel);
//通过膨胀操作使直线更明显
Mat kernel1 = getStructuringElement(MORPH_RECT, Size(, ));
dilate(binary, binary, kernel1);
//imshow("temp image",binary);
//霍夫直线检测
vector<Vec4f> linesPoint;
HoughLinesP(binary, linesPoint, , CV_PI / , , , );
for (int i = ; i < linesPoint.size(); i++){
line(dst, Point(linesPoint[i][], linesPoint[i][]), Point(linesPoint[i][], linesPoint[i][]), Scalar(,,), );
}
imshow("Object image", dst);
waitKey();
return ;
}

    结果:

  代码中关于仿射变换,有不懂的可以去看看这篇博客:https://blog.csdn.net/u013105205/article/details/78826789

opencv检测图像直线的更多相关文章

  1. python+opencv检测图像清晰度

    直接上代码,list_jian.txt为待检测图像路径列表 import cv2 import numpy as np import os for path in open("list_ji ...

  2. 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容

    基于知乎上的一个答案.问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢 ...

  3. (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来

    原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...

  4. 用 Python 和 OpenCV 检测图片上的条形码

      用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...

  5. 用 Python 和 OpenCV 检测图片上的条形码(转载)

    原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...

  6. 一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  7. OpenCV文本图像的旋转矫正

    用户在使用Android手机拍摄过程中难免会出现文本图像存在旋转角度.这里采用霍夫变换.边缘检测等数字图像处理算法检测图像的旋转角度,并根据计算结果对输入图像进行旋转矫正. 首先定义一个结构元素,再通 ...

  8. OpenCV计算点到直线的距离 数学法

    我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //== ...

  9. 【转】opencv检测运动物体的基础_特征提取

    特征提取是计算机视觉和图像处理中的一个概念.它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点.连续的曲线或者连 ...

随机推荐

  1. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  2. 是时候考虑让你的Spark跑在K8S上了

    [摘要] Spark社区在2.3版本开始,已经可以很好的支持跑着Kubernetes上了.这样对于统一资源池,提高整体资源利用率,降低运维成本(特别是技术栈归一)有着非常大的帮助.这些趋势是一个大数据 ...

  3. Python之HTTP协议

    HTTP协议,又称超文本传输协议,主要用于浏览器与服务器之间的通信. HTTP 协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP 协议设计之前目的是传输网页数据的,现在允许传输任意类型的 ...

  4. 阿里巴巴 Service Mesh 落地的架构与挑战

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 方克明(溪翁 ...

  5. layui中formSelects的使用

    1.下载 下载地址:https://github.com/hnzzmsf/layui-formSelects 2. 引入 //引入formSelects.css <link rel=" ...

  6. mac eclipse Android开发环境搭建

    http://www.cnblogs.com/macro-cheng/archive/2011/09/30/android-001.html

  7. mininet(二)简单的路由实验

    mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 在网上找了 好几个代码都是不能直接复现成功,这里把自己实现成功的代码给大家演示一下. 实验的 ...

  8. GIS学习汇总

    GIS之家: Geoserver: geoserver安装部署步骤 geoserver发布地图服务WMS geoserver发布地图服务WMTS geoserver集成以及部署arcgis serve ...

  9. Coderfocers-551C

    Professor GukiZ is concerned about making his way to school, because massive piles of boxes are bloc ...

  10. unordered_map / HashTable 的负载因子是什么意思

    // in C++ 前段时间在看一些关于这个的文章时遇到了一些问题:unordered_map / HashTable 的负载因子是什么意思 经过度娘的搜索,最后得出: 若设 Hash 表的桶数量为 ...