c# OpenCvSharp透视矫正参数调整器

 透视矫正不够智能化,每次都要进行局部参数调整,不便于程序使用,程序流程还是那几个步骤;

1、读取图像、灰度化

2、高斯滤波

3、二值化

4、边缘检测

灰度化图

上个图看看经过调整透视矫正边缘检测结果我还是挺满意的

发现一个新问题获取最大面积的四个点有两个点重复在一个位置

一、读取图像、灰度化

 固定化格式按部就班

 private void button1_Click(object sender, EventArgs e){OpenFileDialog dialog = new OpenFileDialog();dialog.Multiselect = false;//该值确定是否可以选择多个文件dialog.Title = "请选择文件夹";dialog.Filter = "所有文件(*.*)|*.*";if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){// 1、读取图像、灰度化string file = dialog.FileName;Mat image = Cv2.ImRead(file, ImreadModes.Color);Mat src_gray = new Mat();Cv2.CvtColor(image, src_gray, ColorConversionCodes.BGR2GRAY); // 转换为灰度图像}

 二,高斯滤波

高斯模糊容易找到最大边界进行校正具体参数说明搜索一堆答案不在描述了

/// <summary>
/// 2、高斯滤波
/// </summary>
private void GaussianBlur()
{Cv2.GaussianBlur(src_img, dst, new OpenCvSharp.Size(gussX, gussY), gussPX, gussPY);   //高斯模糊pictureBox1.Image = dst.ToBitmap();pictureBox1.Refresh();
}

 三、二值化

二值化区分索要区域,便于边缘检测

/// <summary>
/// 二值化
/// </summary>
private void Threshold()
{if (cmBoxThre.Text == ""){return;}ThresholdTypes aaa = (ThresholdTypes)Enum.Parse(typeof(ThresholdTypes), cmBoxThre.Text);try{Cv2.Threshold(src_img, dst, tkBarThresh.Value, tkBarMaxValue.Value, aaa);//阈值二值化picBoxShowDel.Image = dst.ToBitmap();}catch (Exception e){Console.WriteLine(e);}}

四、边缘检测 

 /// <summary>/// 边缘检测Canny/// </summary>private void Canny(){int hole = 0;if (!int.TryParse(txtBoxCannyHole.Text, out hole)){return;}try{Cv2.Canny(src_img, dst, tkBarCannyMin.Value, tkBarCannyMax.Value, hole, rbBtnTrue.Checked);  picBoxShowDel.Image = dst.ToBitmap();}catch (Exception e){Console.WriteLine(e);}}

未完后续在补充~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时间戳长度

在线工具 时间戳分秒和毫秒&#xff0c;秒返回的是10位数字&#xff0c;毫秒返回的是13位数字 无论用那种语言&#xff0c;时间戳都是一样的&#xff0c;使用的时候需要注意下长度即可。

MongoDB数据类型详解

BSON 协议与数据类型 MongoDB 为什么会使用 BSON&#xff1f; JSON 是当今非常通用的一种跨语言 Web 数据交互格式&#xff0c;属 ECMAScript 标准规范的一个子集。JSON &#xff08;JavaScript Object Notation&#xff0c;JS 对象简谱&#xff09;即 JavaScript 对象表示法…

开源项目 | 完整部署流程、一款开源人人可用的开源数据可视化分析工具

&#x1f4da; 项目介绍 在互联网数据大爆炸的这几年&#xff0c;各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的 BI 工具。 借助这些 BI 工具&#xff0c;我们能够大幅提升数据分析效率、生成更高质量的项目报告&#xff0c;让用户通过直观的数据看到结…

微服务实战系列之API加密

前言 随着一阵阵凛冽寒风的呼啸&#xff0c;新的年轮不知不觉滚滚而来。故事随着2023的远去&#xff0c;尘封于案底&#xff1b;希望迎着新年&#xff0c;绽放于枝头。在2024新岁启航&#xff0c;扬帆破浪之时&#xff0c;让烦恼抛洒于九霄&#xff0c;让生机蓬勃于朝朝暮暮。 …

Eureka相关问题及答案(2024)

1、什么是Eureka&#xff1f; Eureka是一个由Netflix开发的服务发现&#xff08;Service Discovery&#xff09;工具&#xff0c;它是Spring Cloud生态系统中的一个关键组件。服务发现是微服务架构中的一个重要概念&#xff0c;它允许服务实例在启动时注册自己&#xff0c;以便…

如何充值GPT会员账号?

详情点击链接&#xff1a;如何充值GPT会员账号&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的…

Copilot在PyCharm中可能遇到的问题及其解决方案

尽管GitHub Copilot为PyCharm用户带来了诸多便利&#xff0c;但在实际使用过程中&#xff0c;部分开发者可能会遇到一些问题。下面是一个典型的场景及相应的解决方法&#xff1a; 问题描述&#xff1a; 在启用GitHub Copilot后&#xff0c;在编写Python代码时发现&#xff0c;虽…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动

对于一个TcpServer来说&#xff0c;它的灵魂是什么&#xff1f;就是需要提供一个事件循环EventLop(EventLoop)&#xff0c;不停地去检测有没有客户端的连接到达&#xff0c;有没有客户端给服务器发送数据&#xff0c;描述的这些动作&#xff0c;反应堆模型能够胜任。当服务器和…

【Docker】容器的相关命令

上一篇&#xff1a;创建&#xff0c;查看&#xff0c;进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看&#xff0c;容器 aa…

机器学习-基于attention机制来实现对Image Caption图像描述实验

机器学习-基于attention机制来实现对Image Caption图像描述实验 实验目的 基于attention机制来实现对Image Caption图像描述 实验内容 1.了解一下RNN的Encoder-Decoder结构 在最原始的RNN结构中&#xff0c;输入序列和输出序列必须是严格等长的。但在机器翻译等任务中&…

idea中使用Lombok 失效,@Slf4j 找不到符号的解决办法

文章目录 一、前言二、问题排查和解决方案三、 其他解决方案3.1 另一种解决方案3.2 参考文章 一、前言 今天在一个多module工程中&#xff0c;新增了一个 springboot&#xff08;版本 2.2.4.RELEASE&#xff09; module&#xff0c;像往常一样&#xff0c;我引入了lombok依赖&…

selenium 用webdriver.Chrome 访问网页闪退解决方案

1.1.1. 解决方案&#xff1a; 1.1.1.1. 移动插件到谷歌的安装目录下 1.1.1.2. 设置环境变量 1.1.1.3. 重启电脑检查成功 解决时间&#xff1a;5min

58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析

内容来源于&#xff1a;易道云信息技术研究院VIP课 之前的内容&#xff1a;接管游戏的自动药水设定功能-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;34b9c1d43b512d0b4a3c395b…

Elasticsearch地理位置数据索引

地理位置数据索引 在 Elasticsearch 中&#xff0c;地理位置数据的索引涉及两种主要的字段类型&#xff1a;geo_point 和 geo_shape。这些字段类型允许 Elasticsearch 存储和查询地理空间数据&#xff0c;如坐标点、线和多边形。 geo_point Elasticsearch的geo_point字段类型…

Springboot支付宝沙箱支付(完整详细步骤)

Springboot支付宝沙箱支付&#xff08;完整详细步骤&#xff09; 网页操作步骤1.进入支付宝开发平台—沙箱环境2.点击沙箱进入沙箱环境3.进入沙箱&#xff0c;配置接口加签方式4.配置应用网关5.生成自己的密钥 IntelliJ IDEA 操作步骤1.导入依赖2.在 application.yml 里面进行配…

java基于SSM的毕业生就业管理系统+vue论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本毕业生就业管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信…

TypeScript接口、对象

目录 1、TypeScript 接口 1.1、实例 1.2、联合类型和接口 1.3、接口和数组 1.4、接口和继承 1.5、单继承实例 1.6、多继承实例 2、TypeScript 对象 2.2、对象实例 2.3、TypeScript类型模板 2.4、鸭子类型&#xff08;Duck typing&#xff09; 1、TypeScript 接口 接口…

问题 H: 取余运算

题目描述 输入b&#xff0c;p&#xff0c;k的值&#xff0c;求b^p mod k的值&#xff08;即b的p次方除以k的余数&#xff09;。其中b&#xff0c;p&#xff0c;k*k为32位整数。 输入 输入b&#xff0c;p&#xff0c;k的值 输出 输出b^p mod k的值 样例输入 2 10 9 样例…

Backtrader 文档学习-Strategy(中)

Backtrader 文档学习-Strategy&#xff08;中&#xff09; Strategy是BT的核心模块&#xff0c;需要慢慢摸索内部设计的流程&#xff0c;方法的用途&#xff0c;使用场景&#xff0c;还要一些常用的状态值。 本章主要介绍关于strategy的生存周期&#xff0c;notify_order方法&…

npm指令

1、npm install express&#xff1a;安装Node模块 安装完毕后会产生一个node_modules目录&#xff0c;其目录下就是安装的各个node模块。 2、npm view express&#xff1a;查看node模块的package.json文件夹 注意事项&#xff1a;如果想要查看package.json文件夹下某个标签的…