OpenCV实现直线检测并消除
作者:Leonwenbin 发布时间:2023-07-12 20:44:36
标签:OpenCV,检测,消除
本文实例为大家分享了OpenCV实现直线检测并消除的具体代码,供大家参考,具体内容如下
很简单,代码如下
#include<iostream>
#include<opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat img, dst, img_gary, img_bin, temp, r_line, c_line, kernel;
char INPUT[] = "input";
char OUTPUT[] = "output";
char GRAY_IMG[] = "gary image";
char BIN_IMG[] = "binary image";
char DST_IMG[] = "final image";
img = imread("D:\\OpenCV\\images\\demo_test_2.jpg");
if (img.empty())
{
cout << "image loading failed..." << endl;
return -1;
}
namedWindow(INPUT, WINDOW_AUTOSIZE);
imshow(INPUT, img);
cvtColor(img, img_gary, COLOR_BGR2GRAY);
imshow(GRAY_IMG, img_gary);
adaptiveThreshold(~img_gary, img_bin, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
imshow(BIN_IMG, img_bin);
//水平结构元素
r_line = getStructuringElement(MORPH_RECT, Size(img.cols / 16, 1), Point(-1, -1));
//垂直结构元素
c_line = getStructuringElement(MORPH_RECT, Size(1, img.rows / 16), Point(-1, -1));
kernel = getStructuringElement(MORPH_RECT, Size(4, 4), Point(-1, -1));
erode(img_bin, temp, kernel);
dilate(temp, dst, kernel);
//erode(img_bin, temp, r_line);
//dilate(temp, dst, r_line);
//morphologyEx(img_bin, dst, MORPH_OPEN, c_line);
bitwise_not(dst, dst);
//blur(dst, dst, Size(3, 3), Point(-1, -1));
imshow(DST_IMG, dst);
waitKey(0);
return 0;
}
放几张效果图
原图
处理结果
来源:https://blog.csdn.net/weixin_43788499/article/details/84981528
0
投稿
猜你喜欢
- 网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过
- 错误处理到目前为止,我们都没怎么介绍onComplete()和onError()函数。这两个函数用来通知订阅者,被观察的对象将停止发送数据以
- 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1)
- JSON.toJSONString()空字段不忽略修改使用JSON.toJSONString(object)方法,返回的json中,默认会将
- 先看下效果:两种需求场景:1.广告页3s后跳转到首页2.短信验证码60s倒计时第一种的话,根据需求我们可以知道,我们想要的效果就是3s结束做
- 你知道String、StringBuilder、Stringbuffer的区别吗?当你创建字符串的时候,有考虑过该使用哪个吗?别急,这篇文章
- 实现方案:我们直接参考实例代码:private String pattern = "((http|ftp
- 一,FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指
- 摘要:这个问题算是老生常谈了,我也是一段时间没弄过了,所以感觉有些忘了,就记录一下。一、后端通过shiro在session中存储数据://
- 前言二进制文件读写两个重要的函数 , fread 和 fwrite , fread 用于读取文件 , fwrite 用于写出文件 ;frea
- MediaQuery通常情况下,不会直接将MediaQuery当作一个控件,而是使用MediaQuery.of获取当前设备的信息,用法如下:
- 如图所示的效果相信大家都不陌生,我们可以使用很多种方法去实现此效果,这里自己采用CountDownTimer定时器简单封装下此效果,方便我们
- C# 关于Invoke首先说下,invoke和begininvoke的使用有两种情况:control中的invoke、begininvoke
- 1、取得控制台应用程序的根目录方法方法1、Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法
- 当你在开发flutter应用的时候,有时会需要调用native的api,往往遇到flutter并没有相应的package, 这时候flutt
- 机器学习 机器学习的目的是把数据转换成信息。 机器学习通过从数据里提取规则或模式来把数据转成信息。 人脸识别 人脸识别通过级联分类器对特征的
- 需求基于MTK8163 8.1平台定制导航栏部分,在左边增加音量减,右边增加音量加思路需求开始做之前,一定要研读SystemUI Navig
- 一、前言(吐槽+煽情+简介) &n
- 概述:App几乎都离不开与服务器的交互,本文主要讲解了flutter网络请求三种方式 flutter自带的HttpClient、 第三方库h
- google benchmark已经为我们提供了类似的功能,而且使用相当简单。具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂