EmguCV学习笔记 VB.Net 5.4 图像修复

2024-08-21 09:52

本文主要是介绍EmguCV学习笔记 VB.Net 5.4 图像修复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。

教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客

教程C#版本请访问:EmguCV学习笔记 C# 目录-CSDN博客

笔者的博客网址:https://blog.csdn.net/uruseibest

教程配套文件及相关说明以及如何获得pdf教程和代码,请移步:EmguCV学习笔记

学习VB.Net知识,请移步: vb.net 教程 目录_vb中如何用datagridview-CSDN博客

 学习C#知识,请移步:C# 教程 目录_c#教程目录-CSDN博客

 

5.4 图像修复

CvInvoke类的Inpaint方法用于图像修复,可以通过填充缺失的图像区域来恢复图像的完整性。该方法通常用于去除图像中的噪点、划痕或遮挡物等。该方法声明如下:

Public Shared Sub Inpaint (

         src As IInputArray,

         mask As IInputArray,

         dst As IOutputArray,

         inpaintRadius As Double,

         flags As InpaintType

)

参数说明:

  1. src:输入图像,可以是单通道或多通道图像。
  2. mask:修复区域的掩码图像,与输入图像具有相同的尺寸,掩码图像中的非零像素表示需要修复的区域。
  3. dst:输出图像,与输入图像具有相同的尺寸和深度。
  4. inpaintRadius:修复半径,用于指定修复算法的范围。
  5. flags:修复方法,InpaintType枚举,包括两个成员:
    1. NS:基于Navier-Stokes算法修复图像。
    2. Telea:基于Alexandru Telea算法修复图像。

【代码位置:frmChapter5】Button12_Click

    '图像修复

    Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click

        '需要修复的图像

        Dim m As New Mat("C:\learnEmgucv\lenarepair.jpg", CvEnum.ImreadModes.Color)

        ImageBox1.Image = m

        '设置掩码图像

        Dim mMask As New Mat

        CvInvoke.CvtColor(m, mMask, ColorConversion.Bgr2Gray)

        '二值化,其中非0的地方表示需要修复的地方

        CvInvoke.Threshold(mMask, mMask, 235, 255, ThresholdType.Binary)

        ImageBox2.Image = mMask

        '进行膨胀,扩大一定修复范围

        Dim kernel As New Mat

        kernel = CvInvoke.GetStructuringElement(ElementShape.Rectangle, New Drawing.Size(5, 5), New Point(-1, -1))

        CvInvoke.Dilate(mMask, mMask, kernel, New Point(-1, -1), 1, BorderType.Constant, New MCvScalar(255, 0, 0))

        '创建输出图像

        Dim mout As New Mat

        '执行图像修复

        CvInvoke.Inpaint(m, mMask, mout, 5, InpaintType.Telea)

        ImageBox3.Image = mout

    End Sub

运行后如下图所示:

图5-13 修复后的图像

【代码位置:frmChapter5】Button13_Click

    '图像修复

    'Inpaint似乎对分散、小面积、且标记的噪点更好修复

    Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click

        '需要修复红色标记的图片

        Dim msrc As New Mat("c:\learnEmgucv\w1.jpg", ImreadModes.Color)

        '这里使用了一张对原图需要修复位置进行白色标注的图片作为模板

        Dim msrcmask As New Mat("c:\learnEmgucv\w2.jpg", ImreadModes.Color)

        '将白色标记部分提取为掩码图像

        Dim mgray As New Mat

        CvInvoke.CvtColor(msrcmask, mgray, ColorConversion.Bgr2Gray)

        Dim mMask As New Mat

        CvInvoke.Threshold(mgray, mMask, 240, 255, ThresholdType.Binary)

        Dim kernel1 As New Mat

        kernel1 = CvInvoke.GetStructuringElement(ElementShape.Rectangle, New Drawing.Size(5, 5), New Point(-1, -1))

        CvInvoke.Dilate(mMask, mMask, kernel1, New Point(-1, -1), 1, BorderType.Constant, New MCvScalar(255, 0, 0))

        Dim mout As New Mat

        CvInvoke.Inpaint(msrc, mMask, mout, 5, InpaintType.NS)

        ImageBox1.Image = msrc

        ImageBox2.Image = mMask

        ImageBox3.Image = mout

End Sub

运行后如下图所示:

图5-14 修复后的图像

这篇关于EmguCV学习笔记 VB.Net 5.4 图像修复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092826

相关文章

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4