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

server/2024/11/14 20:14:39/

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

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 修复后的图像


http://www.ppmy.cn/server/104108.html

相关文章

el-image的配套使用(表格,表单)

1. 配合table在一起使用&#xff0c;支持预览 此处使用场景是表格中只显示一张图片 preview-src-list只支持数组&#xff0c;故需要将单个字符串转换为转换为字符串数组 <el-table-column align"center" label"二维码"><template slot-scope&q…

QT WIN11 FluentUI APP开发

代码 import QtQuick import QtQuick.Controls import FluentUIItem {property bool autoPlay: trueproperty int loopTime: 2000property var modelproperty Component delegateproperty bool showIndicator: trueproperty int indicatorGravity : Qt.AlignBottom | Qt.Align…

前端CSS选择器

css 和html 三种表示方式 行内样式 >内部样式>外部样式 元素选择器 属性选择器 id选择器 选择id为bb的 &#xff0c;给他增添样式 class选择器以 .开头 用法和id差不都 包含选择器和父子选择器 兄弟选择器 选择器组合 伪元素选择器 首字母格式不一样 首行格式不一样 …

文本分类任务算法演变(二)

文本分类任务算法演变 1.深度学习-pipeline1.1fastText1.2LSTM1.2.1公式详解1.2.2可视化 1.3TextCNN1.4Gated CNN1.5TextRCNN1.6Bert1.6.1取[cls] token对应的向量1.6.2将整句话的向量取max/average pooling1.6.3将Bert编码后的向量再输入LSTM或CNN1.6.4将Bert中间层的结果取出…

LlamaIndex 实现 RAG (一)

理解过 LlamaIndex 的功能之后&#xff0c;本文通过 LlamaIndex 快速实现一个简单的 RAG 应用&#xff0c;主要包括以下几个部分&#xff1a; 创建知识库&#xff0c;并进行 Embedding集成本地 Ollama 模型或者 Qwen 模型通过 Streamlit 可视化 RAG 文末提供了源代码地址 创…

火爆国内外的《黑神话:悟空》,需要什么显卡才能玩?

一路西行&#xff0c;大圣归来&#xff01; 8月20日&#xff0c;国产游戏《黑神话&#xff1a;悟空》上午10时正式上线。这款游戏在Steam平台的同时在线玩家突破了114万&#xff0c;超越《CS2》登顶Steam热玩榜。 仅单日实际在线人数就超过了210万 &#xff0c;超过《幻兽帕鲁…

手动修改zk类型的kafka offset

手动修改zk类型的 offset: 连接到ZooKeeper ./zkCli.sh -server ..123:2181,.…87.124:2181,1*.*.87.125:2181 查找并修改ae_spark这个topic的消费者组的offset值 对于每个分区&#xff08;0、1、2&#xff09;&#xff0c;需要分别查看和修改offset值 查看和修改分区0的offs…

【中仕公考怎么样】公务员行测考什么内容?

行政职业能力测验&#xff0c;也就是我们常说的“行测”。是公务员考试笔试环节中的核心科目&#xff0c;占据总成绩的50%。主要考察考生在言语理解与表达、数量关系、判断推理、资料分析和常识判断方面的能力。 国考行测分为副省级、地市级以及行政执法类&#xff0c;题目数量…