当前位置: 首页 > news >正文

C# OpenCvSharp 实现迷宫解密

效果

项目

代码

using OpenCvSharp;
using System;
using System.Drawing;
using System.Windows.Forms;namespace OpenCvSharp_实现迷宫解密
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){pictureBox1.Image = new Bitmap("test.png");}private void button1_Click(object sender, EventArgs e){//读取图片Mat src = Cv2.ImRead("test.png");//BGR2GRAYMat gray = new Mat();Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);//Cv2.ImShow("gray", gray);//1、对图像进行二值化处理//反转 产生一个二进制的图像与白色的墙壁和黑色的背景Mat thresh = new Mat();Cv2.Threshold(gray, thresh, 127, 255, ThresholdTypes.BinaryInv);// Cv2.ImShow("thresh", thresh);//2、对二值化后的图像进行轮廓检测并标注OpenCvSharp.Point[][] contours;HierarchyIndex[] hierarchly;Cv2.FindContours(thresh, out contours, out hierarchly, RetrievalModes.External, ContourApproximationModes.ApproxNone);Mat dc = Mat.Zeros(src.Size(), MatType.CV_8UC1);Cv2.DrawContours(dc, contours, 0, new Scalar(255, 255, 255), 6);//3、对图像阈值进行处理Cv2.Threshold(dc, thresh, 240, 255, ThresholdTypes.Binary);//Cv2.ImShow("thresh2", thresh);//4、对图像进行扩展操作/*扩张是数学形态领域的两个基本操作者之一,另一个是侵蚀。它通常应用于二进制图像,但有一些版本可用于灰度图像。操作者对二进制图像的基本效果是逐渐扩大前景像素区域的边界(通常为白色像素)。因此,前景像素的面积大小增加,而这些区域内的孔变小。*/Mat kernel = Mat.Ones(10, 10, MatType.CV_8UC1);Mat dilation = new Mat();Cv2.Dilate(thresh, dilation, kernel);//Cv2.ImShow("dilation", dilation);//5、对图像进行侵蚀操作/*侵蚀是第二个形态运算符。它也适用于二进制图像。操作者对二进制图像的基本效果是消除前景像素区域的边界(通常为白色像素)。因此,前景像素的面积缩小,并且这些区域内的孔变大。*/Mat erosion = new Mat();Cv2.Erode(dilation, erosion, kernel);//Cv2.ImShow("erosion", erosion);//6、分迷宫通道找出路径Mat diff = new Mat();Cv2.Absdiff(dilation, erosion, diff);Mat[] channels = Cv2.Split(src);channels[0] &= ~diff;channels[1] &= ~diff;channels[2] |= diff;Mat dst = new Mat();Cv2.Merge(channels, dst);//Cv2.ImShow("solution", dst);pictureBox2.Image = new Bitmap(dst.ToMemoryStream());}}
}

Demo下载

相关文章:

C# OpenCvSharp 实现迷宫解密

效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms;namespace OpenCvSharp_实现迷宫解密 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e…...

趣味工具箱小程序源码

趣味工具箱小程序源码,支持功能去水印,精选壁纸,图片压缩,文字生成二维码,图片加水印,模拟来电,手持弹幕,掷骰子…等 使用小工具,一个小程序有几十个功能。 源码下载&am…...

互联网Java工程师面试题·Redis 篇·第二弹

目录 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis…...

FreeRTOS入门教程(信号量的概念及API函数使用)

文章目录 前言一、什么是信号量二、信号量种类和对比三、信号量和队列的区别四、信号量相关的函数1.创建函数2.删除函数3.获取和释放信号量函数 总结 前言 本篇文章正式带大家开始学习什么是信号量,并且掌握信号量函数的基本使用方法,并且将和队列进行一…...

简易版Pycharm(2023)+Conda开发环境配置教程

困 扰 不知道为什么,自从Pycharm更新了新的版本以后,在Pycharm中为项目工程配置Python解释器环境时,总是不能像以前那么方便的配置。 比如,当前Conda中有十个不同的开发环境,每个环境一个名称,比如&#x…...

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(二)

前言 在上一篇深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)_往事如烟隔多年的博客-CSDN博客 文章中对SpringBoot整合Quartz做了初步的介绍以及提供了一个基本的使用例子,因为实际各自的需求任务不尽相同因此并…...

小谈设计模式(22)—单例模式

小谈设计模式(22)—单例模式 专栏介绍专栏地址专栏介绍 单例模式点睛所在优缺点分析优点确保只有一个实例全局访问点节省资源线程安全 缺点难以扩展对象的生命周期单一职责原则隐藏依赖关系 Java程序实例实例a分析实例b,更安全分析优化 ——“…...

华为OD机考算法题:分班

题目部分 题目分班难度易题目说明幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。 小朋友的编号为整数,与前一位小朋友同班用 Y 表示,不同班用 N 表示…...

【gcc】RtpTransportControllerSend学习笔记 3:gcc

本文是大神 https://www.cnblogs.com/ishen 的文章的学习笔记。大神的webrtc源码分析(8)-拥塞控制(上)-码率预估 详尽而具体,堪称神作。本文使用的代码是m79 ,与大神有不同。2.4 Probe只会在一些特殊的时候才会进行探测(链路刚开始时, 码率不正常暴跌时)2.5 : 对发送的吞吐量…...

CSP-J第二轮试题-2019年-3题

文章目录 参考:总结 [CSP-J2019] 纪念品题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案 现场真题注意事项 参考: P5662 CSP-J2019纪念品 总结 本系列为CSP-J/S算法竞赛真题讲解,会按照年…...

数据库:Hive转Presto(三)

继续上节代码。 import re import os import tkinter.filedialog from tkinter import *class Hive2Presto:def __int__(self):self.t_funcs [substr, nvl, substring, unix_timestamp] \[to_date, concat, sum, avg, abs, year, month, ceiling, floor]self.time_funcs [d…...

【AI视野·今日Robot 机器人论文速览 第四十八期】Thu, 5 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 5 Oct 2023 Totally 32 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers LanguageMPC: Large Language Models as Decision Makers for Autonomous Driving Authors Hao Sha, Yao Mu, Yuxuan Jiang, Li…...

学信息系统项目管理师第4版系列20_风险管理

1. 针对不确定性的应对方法 1.1. 【高23上选58】 1.2. 收集信息 1.2.1. 可以对信息收集和分析工作进行规划,以便发现更多信息(如进行研究、争取专家参与或进行市场分析)来减少不确定性 1.3. 为多种结果做好准备 1.3.1. 制定可用的解决方…...

卷积神经网络的发展历史-VGG

VGG的产生 2014 年,Simonyan和Zisserman提出了VGG系列模型(包括VGG-11/VGG-13/VGG-16/VGG-19),并在当年的ImageNet Challenge上作为分类任务第二名、定位(Localization)任务第一名的基础网络出现。 VGG的…...

qt解决信号和槽连接时传递额外参数的问题

解决信号和槽连接时传递额外参数的问题 QSignalMapper 是 Qt 框架中的一个类,用于解决信号和槽连接时传递额外参数的问题。当一个信号被触发时,QSignalMapper 可以将该信号与一个特定的参数关联起来,并将信号与对应的槽函数进行连接。 下面…...

『力扣每日一题14』:消失的数字

昨天忙过头,等想起来已经 12 点多了,于是乎断更了。在这里先跟广大读者说声抱歉,并且稍后我会再更一篇。 一、题目 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&…...

【b站韩顺平 快速学Java课】Java的JDK8(包括公共JRE8)安装教程 总结

最近开始学Java,如果是程序员的话要使用Java——需要安装JDK。 不同操作系统(Win/Linux/Mac)——需要安装不同的JDK。 1.JDK安装官网链接: Java Downloads | Oracle 我的电脑是win x64,以下笔记总结就暂且以本人电脑操作系统版本…...

Spark 弹性分布式数据集 RDD

1.RDD简介 `RDD` 全称为 Resilient Distributed Datasets,是 Spark 最基本的数据抽象,它是只读的、分区记录的集合,支持并行操作,可以由外部数据集或其他 RDD 转换而来,它具有以下特性: 一个 RDD 由一个或者多个分区(Partitions)组成。对于 RDD 来说,每个分区会被一个…...

电脑被删除的文件怎么恢复?2023年数据恢复方法分享

大多数人在使用电脑时都可能会遇到误删文件的情况。一不小心,重要的文件或数据就消失了,情急之下,大多会感到慌乱和无助。但其实,文件误删除并非不可挽回的灾难。本文将为大家介绍几种有效的文件恢复方法,以帮助大家在…...

李宏毅 2022机器学习 HW3 boss baseline 上分记录

作业数据是所有数据都有标签的版本。 李宏毅 2022机器学习 HW3 boss baseline 上分记录 1. 训练数据增强2. cross validation&ensemble3. test dataset augmentation4. resnet 1. 训练数据增强 结论:训练数据增强、更长时间的训练、dropout都证明很有效果&…...

SpringBatch适配不同数据库的两种方法

一、配置JobRepository Configuration EnableBatchProcessing public class TaskArrangeConfig extends DefaultBatchConfigurer {Autowiredprivate DataSource dataSource;Autowiredprivate JobLauncher jobLauncher;Autowiredprivate JobExplorer jobExplorer;Autowiredpriv…...

【ARM CoreLink 系列 5 -- CI-700 控制器介绍 】

文章目录 1.1 什么是 CI-700?1.1.1 关于 CI-7001.1.2 CI-700 特点1.2 全局配置参数1.2.1 寻址能力1.3 组件和配置1.3.1 CI-700 互联的结构1.3.2 Crosspoint(XP)1.3.3 外部接口1.4 组件(Components)1.1 什么是 CI-700? CI-700是一种AMBA 5 CHI互连,具有可定制的网状拓扑结构…...

找不到msvcp140_1.dll怎么办,快速解决msvcp140_1.dll问题的方法分享

在日常使用计算机的过程中,经常会遇到一些程序无法正常运行的问题,其中最常见的就是“msvcp140_1.dll丢失”。这是一个典型的DLL文件丢失问题,但背后的原因却往往并不简单。通过深入研究这个问题,我对其有了更深入的理解。 首先&a…...

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Nextcloud3.1 Nextcloud 介绍3.2 Docker 环境搭建3.3 Nex…...

vue3中使用插件vite-plugin-svg-icons

在vue3 vite 项目中使用svg图标 插件:vite-plugin-svg-icons 预加载 在项目运行时就生成所有图标,只需操作一次 dom高性能 内置缓存,仅当文件被修改时才会重新生成 安装 yarn add vite-plugin-svg-icons -D # or npm i vite-plugin-svg-icons -D # or pnpm inst…...

面试题20231008

前端 2023年前端面试题汇总-CSDN博客 后端 1.Java基础 容器、线程等等 a.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Envir…...

2023全新小红书图集和视频解析去水印网站源码

2023全新小红书图集和视频解析去水印网站源码 小红书视频图集解析网站源码,在红书看到好看的图片以及好看的头像,但是直接下载又有水印就非常难受,这个可以一键解析去除水印,支持统计解析次数,本地接口。 源码下载&a…...

2023去水印小程序源码修复版-前端后端内置接口+第三方接口

去水印小程序源码,前端后端,内置接口第三方接口,修复数据库账号密码错误问题,内置接口支持替换第三方接口,看了一下文件挺全的,可以添加流量主代码,搭建需要准备一台服务器,备案域名…...

鸿蒙手表开发之使用adb命令安装线上包

#国庆发生的那些事儿# 鸿蒙手表开发之使用adb命令安装线上包 前言: 由于之前的哥们匆忙离职了,所以鸿蒙手表项目的新版本我临时接过来打包发布,基本上之前没有啥鸿蒙经验,但是一直是做Android开发的,在工作人员的指…...

华为OD机试 - 计算最大乘积(2022Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…...

wordpress可以商用吗/武汉建站公司

/* ******************************************************************************************************* * * 文件名称 : gui_user.c * 版 本 : V1.0 * 作 者 : OpenRabbit * 说 明 : GUI 与 RTOS 和硬件的交互文件,使用时注意区分 MCU 端和模拟器…...

郑州七彩网站建设公司 概况/seo首页网站

不知道你是否有着和我类似的体验:工作的时候,特别渴望假期的到来,但是当假期真正到来的时候,却又不知道该如何打发闲暇时间。叔本华曾经说过:“人的一生就像是一个钟摆,欲望得不到满足就痛苦,欲…...

厦门做企业网站/免费推广网站大全

最短路问题需要记录路径时,可以另外开一个数组记录从哪个点走过来的。如果需要找出多条长度一样的最短路径,可以类似邻接链表的形式记录被更新的点,最后用dfs搜索。a * b % mod a % mod * b % mod乘法运算时要注意是否超上限long long类型最…...

阅读网站怎么做/头条新闻最新消息

1.21 简单的将书上代码敲了一遍。 非常顺利就过了。 1.22 就悲剧了。 先按书本的意思。代码非常快就写完了。但计算的时间在机子上漂浮不定。 3-5倍之间。 代码例如以下: (define (search-for-primes start end count) (define (timed-prime-test n)(newline) …...

外国出名的设计网站/兰州seo快速优化报价

1 先创建虚拟机 1 新建虚拟机 3 使用已有的虚拟磁盘 4 点击创建 5 完成 本文转自zhang25yun51CTO博客,原文链接: http://blog.51cto.com/1585654/1673214,如需转载请自行联系原作者...

佛山设计网站公司吗/佛山市seo推广联系方式

https://www.zhihu.com/question/24222456 IT行业,未来10年和20年,技术发展方向会是什么? 本人CS 本科刚毕业,正在选择工作方向。希望之后专注一个方向发展。个人目前喜欢backend web and mobile app development. 同时希望听听业…...