EmguCV学习笔记 VB.Net 2.S 特别示例

news2024/12/28 11:17:42

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

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

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

笔者的博客网址:VB.Net-CSDN博客

教程配套文件及相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记

2.S 特别示例

本节示例参考《计算机视觉40例从入门到深度学习(OpenCV-Python)》。

2.S.1 生成随机值图像

随机值图像,即每个像素的颜色随机的图像。本节内容介绍了三种方式生成随机值图像。

1、通常的方式

直接使图像每个像素点的颜色为随机颜色。

【代码位置:frmChapter2_S1】Button1_Click

    '生成随机值图像1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        '使用Matrix来生成灰度(单通道)的随机值图像

        Dim s As New Size(400, 400)

        Dim matr As New Matrix(Of Byte)(s)

        Dim r As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                matr(i, j) = r.Next(256)

            Next

        Next

        ImageBox1.Image = matr.Mat

        '使用Image来生成彩色(多通道)的随机值图像

        Dim img As New Image(Of Bgr, Byte)(s)

        Dim r2 As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                img(i, j) = New Bgr(r2.Next(256), r2.Next(256), r2.Next(256))

            Next

        Next

        ImageBox2.Image = img.Mat

End Sub

运行后如下图所示:

图2-84 普通方法生成随机噪声图片

2、SetRandNormal

Matrix类的SetRandNormal方法用于将矩阵的每个元素设置为正态分布随机数。SetRandNormal方法的具体使用参看2.2.6节【随机矩阵】。

【代码位置:frmChapter2_S1】Button2_Click

    '生成随机值图像2 SetRandNormal

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim matr As New Matrix(Of Byte)(New Size(400, 400))

        matr.SetRandNormal(New MCvScalar(100), New MCvScalar(200))

        Dim m As New Mat

        m = matr.Mat

        ImageBox1.Image = m

        Dim matr1 As New Matrix(Of Byte)(400, 400, 3)

        matr1.SetRandNormal(New MCvScalar(100, 100, 100), New MCvScalar(200, 200, 200))

        Dim m1 As New Mat

        m1 = matr1.Mat

        ImageBox2.Image = m1

End Sub

运行后如下图所示:

 

图2-85 SetRandNormal方法生成随机噪声图片

3、SetRandUniform

Matrix类的SetRandUniform方法用于将矩阵的每个元素设置为均匀分布的随机数,要设置随机数的Matrix对象可以是单通道矩阵或多通道矩阵。该方法声明如下:

Public Sub SetRandUniform (

         floorValue As MCvScalar,

         ceilingValue As MCvScalar

)

参数说明:

  1. floorValue:随机数范围的下界(获取的值包含此下界)。
  2. ceilingValue:随机数范围的上界(获取的值不包含此上界)。

【代码位置:frmChapter2_S1】Button3_Click

    '生成随机值图像3 SetRandUniform

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        Dim matr As New Matrix(Of Byte)(New Size(400, 400))

        matr.SetRandUniform(New MCvScalar(100), New MCvScalar(200))

        Dim m As New Mat

        m = matr.Mat

        ImageBox1.Image = m

        Dim matr1 As New Matrix(Of Byte)(400, 400, 3)

        matr1.SetRandUniform(New MCvScalar(100, 100, 100), New MCvScalar(200, 200, 200))

        Dim m1 As New Mat

        m1 = matr1.Mat

        ImageBox2.Image = m1

End Sub

运行后如下图所示:

图2-86 SetRandUniform方法生成随机噪声图像

2.S.2 图像加密

为了使读者更清楚掌握详细加解密过程,这里分为图像的整体加解密和图像的局部加解密,并附上详细操作步骤,请结合代码深入掌握。

一、图像整体加解密

具体实现步骤:

(一)准备

1、载入源图像(mSrc)

2、与源图像同等大小的随机值图像(mKey)

(二)加密

3、源图像(mSrc)和随机值图像(mKey)进行Xor操作,将源图像加密,生成加密图像(mEnc)。

(三)解密

4、加密图像(mEnc)和随机值图像(mKey)进行Xor操作,将加密图像解密,生成解密图像(mDec)。

以下是详细的代码实现:

【代码位置:frmChapter2_S1】Button4_Click

   '图像加密和解密

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim mSrc As New Mat("c:\lessons\lena.jpg", ImreadModes.Color)

        Dim mKey As New Mat

        '生成三通道随机值图像

        Dim matr1 As New Matrix(Of Byte)(mSrc.Rows, mSrc.Cols, 3)

        matr1.SetRandNormal(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        mKey = matr1.Mat

        '显示密钥图像

        ImageBox1.Image = mKey

        '加密

        Dim mEnc As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey, mEnc)

        '显示加密图像

        ImageBox2.Image = mEnc

        '解密

        Dim mDec As New Mat

        CvInvoke.BitwiseXor(mEnc, mKey, mDec)

        '显示解密图像

        ImageBox3.Image = mDec

End Sub

运行后如下图所示:

 

图2-87 图像整体加解密

二、三种方式生成加密图像的对比

为了更进一步地做好图像局部加解密,笔者这里将2.S.1节【生成随机值图像】的三种方法做成了函数,只需要输入图像大小就可以生成对应大小的随机值图像。具体代码如下:

【代码位置:frmChapter2_S1】getRandCh3、getRandNormalCh3、getRandUniformCh3

    '普通方式生成三通道随机值图像

    Private Function getRandCh3(ByVal s As Size) As Mat

        Dim img As New Image(Of Bgr, Byte)(s)

        Dim r As New Random()

        For i As Integer = 0 To s.Width - 1

            For j As Integer = 0 To s.Height - 1

                img(i, j) = New Bgr(r.Next(256), r.Next(256), r.Next(256))

            Next

        Next

        Return img.Mat

    End Function

    'SetRandNormal生成三通道随机值图像

    Private Function getRandNormalCh3(ByVal s As Size) As Mat

        Dim matr As New Matrix(Of Byte)(s.Height, s.Width, 3)

        matr.SetRandNormal(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        Return matr.Mat

    End Function

    'SetRandUniform生成三通道随机值图片

    Private Function getRandUniformCh3(ByVal s As Size) As Mat

        Dim matr As New Matrix(Of Byte)(s.Height, s.Width, 3)

        matr.SetRandUniform(New MCvScalar(0, 0, 0), New MCvScalar(255, 255, 255))

        Return matr.Mat

End Function

使用以上三个函数对图像加密实现代码如下:

【代码位置:frmChapter2_S1】Button5_Click

    '三种方式生成随机图像进行加密

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

        Dim mSrc As New Mat("C:\learnEmgucv\lena.jpg", ImreadModes.Color)

        '加密1

        Dim mKey1 As New Mat

        mKey1 = getRandCh3(mSrc.Size)

        Dim mEnc1 As New Mat()

        mEnc1 = mSrc.Clone

        CvInvoke.BitwiseXor(mSrc, mKey1, mEnc1)

        ImageBox1.Image = mEnc1

        '加密2

        Dim mKey2 As New Mat

        mKey2 = getRandNormalCh3(mSrc.Size)

        Dim mEnc2 As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey2, mEnc2)

        ImageBox2.Image = mEnc2

        '加密3

        Dim mKey3 As New Mat

        mKey3 = getRandUniformCh3(mSrc.Size)

        Dim mEnc3 As New Mat()

        CvInvoke.BitwiseXor(mSrc, mKey3, mEnc3)

        ImageBox3.Image = mEnc3

End Sub

运行后如下图所示:

 

图2-88 三种方式生成加密图像

可以看到中间图像加密后隐约能够看到源图像的样子,而其它两种方式能够很好地对图像加密。采用SetRandNormal方式生成的随机值图像,由于使用了正态分布,作为加密方式不理想。

三、图像局部加解密

具体实现步骤:

(一)准备

1、载入源图像(mSrc)

2、生成背景黑色,区域白色的掩码图像1(mMask1)

3、生成背景白色,区域黑色的掩码图像2(mMask2)

4、生成密钥图像(mKey)

(二)加密

5、密钥图像(mKey)和源图像(mSrc)进行Xor操作,将源图像加密,生成加密图像(mEnc)。图2-SA1 第1张图。

6、将加密图像(mEnc)和掩码图像1(mMask1)进行And操作,生成背景黑色+区域加密图像1(mEncPart)。图2-SA1 第2张图。

7、将源图像(mSrc)和掩码图像2(mMask2)进行And操作,生成背景不加密+区域黑色图像2(mnoEncPart)。图2-SA1 第3张图。

8、将加密图像1(mEncPart)和黑色图像2(mnoEncPart)进行直接相加,去除黑色部分,生成背景不加密+区域加密的最终图像(mResult)。图2-SA1 第4张图。

 

图2-89 加密过程

(三)解密

9、将最终图像(mResult)和密钥图像(mKey)进行Xor操作,生成背景加密+区域解密图像1(mDecPart)。图2-SA2 第1张图。

10、将解密图像1(mDecPart)和掩码图像1(mMask1)进行And操作,生成背景黑色+区域解密图像2(monlyDecPart)。图2-SA2 第2张图。

11、将最终图像(mResult)和掩码图像2(mMask2)进行And操作,生成背景不加密+区域黑色图像(mnoDecPart)。图2-SA2 第3张图。

12、将解密图像2(monlyDecPart)和黑色图像(mnoDecPart)进行直接相加,去除黑色部分,生成生成解密图像(mDecResult)。图2-SA1 第4张图。

 

图2-90 解密过程

以下是详细的代码实现:

【代码位置:frmChapter2_S1】Button6_Click

    '图像局部加密和解密

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Dim mSrc As New Mat("C:\learnEmgucv\lena.jpg", ImreadModes.Color)

        ImageBox1.Image = mSrc

        '(200,200,399,399)区域进行加密解密

        '生成背景黑色,区域白色的掩码图像1

        Dim mMask1 As New Mat(mSrc.Size, DepthType.Cv8U, 3)

        mMask1.SetTo(New MCvScalar(0, 0, 0))

        Dim mMask1RIO As New Mat(mMask1, New Rectangle(200, 200, 200, 200))

        mMask1RIO.SetTo(New MCvScalar(255, 255, 255))

        '生成背景白色,区域黑色的掩码图像2

        Dim mMask2 As New Mat(mSrc.Size, DepthType.Cv8U, 3)

        mMask2.SetTo(New MCvScalar(255, 255, 255))

        Dim mMask2RIO As New Mat(mMask2, New Rectangle(200, 200, 200, 200))

        mMask2RIO.SetTo(New MCvScalar(0, 0, 0))

        'Key图像

        Dim mKey As New Mat

        mKey = getRandUniformCh3(mSrc.Size)

        '加密

        Dim mEnc As New Mat

        'Xor 将源图像全加密

        CvInvoke.BitwiseXor(mSrc, mKey, mEnc)

        Dim mEncPart As New Mat

        'And 生成背景黑色+区域加密图像1

        CvInvoke.BitwiseAnd(mEnc, mMask1, mEncPart)

        Dim mnoEncPart As New Mat

        'And 生成背景不加密+区域黑色图像2

        CvInvoke.BitwiseAnd(mSrc, mMask2, mnoEncPart)

        Dim mResult As New Mat

        mResult = mEncPart + mnoEncPart

        '相加,去除黑色部分,生成背景不加密+区域加密的最终图像

        ImageBox2.Image = mResult

        '解密

        Dim mDecPart As New Mat

        'Xor 生成背景加密+区域解密图像1

        CvInvoke.BitwiseXor(mResult, mKey, mDecPart)

        Dim monlyDecPart As New Mat

        'And 生成背景黑色+区域解密图像2

        CvInvoke.BitwiseAnd(mDecPart, mMask1, monlyDecPart)

        Dim mnoDecPart As New Mat

        'And 生成背景不加密+区域黑色图像

        CvInvoke.BitwiseAnd(mResult, mMask2, mnoDecPart)

        Dim mDecResult As New Mat

        '相加,生成解密图像

        mDecResult = monlyDecPart + mnoDecPart

        ImageBox3.Image = mDecResult

End Sub

运行后如下图所示:

 

图2-91 图像局部加解密

以上代码仅显示了加密解密结果,有兴趣的朋友可以将每一步生成的图像显示出来进一步了解加解密过程。

2.S.3 文字纹理

将文字图像生成0和255的二值化图像,使文字部分为黑色(根据实际情况需要考虑反色),然后将文字图像和纹理图像直接相加,文字图像黑色(值为0)的部分相加后为纹理图像的颜色,文字图像白色(值为255)的部分相加后保持白色(255)。具体实现代码如下:

【代码位置:frmChapter2_S2】Button1_Click

    '灰度图像,以指定图像作为文字纹理

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

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

        ImageBox1.Image = msrc

        '文字文件

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        Dim mmask As New Mat

        '二值化并反色:将文字部分变为黑色0

        CvInvoke.Threshold(mwatermark, mmask, 0, 255, ThresholdType.BinaryInv)

        Dim result As New Mat

        result = msrc + mmask

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-92 灰度图像的文字增加纹理

如果是彩色图像,那么先将三个通道分解出来,分别与文字的二值化图像相加,最后再合并。具体实现代码如下:

【代码位置:frmChapter2_S2】Button2_Click

    '彩色图像,以指定图像作为文字纹理

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

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

        ImageBox1.Image = msrc

        '文字文件

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        Dim mmask As New Mat

        '二值化并反色:将文字部分变为黑色0

        CvInvoke.Threshold(mwatermark, mmask, 0, 255, ThresholdType.BinaryInv)

        '分解每个通道

        Dim mchanel3() As Mat

        mchanel3 = msrc.Split()

        '每个通道计算后再合并

        Dim mv As New VectorOfMat

        For i As Integer = 0 To mchanel3.Length - 1

            Dim msingle As New Mat

            msingle = mchanel3(i) + mmask

            mv.Push(msingle)

        Next

        Dim result As New Mat

        CvInvoke.Merge(mv, result)

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-93 彩色图像的文字增加纹理

2.S.4 图像水印

将水印文件二值化后,与源文件相加,即可得到相应的水印图像。具体实现代码如下:

【代码位置:frmChapter2_S2】Button3_Click

    '图像水印

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

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

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        Dim mendwatermark As New Mat

        '相加

        'mwatermark0的元素会将最后结果mendwatermark中对应位置的元素保持不变

        'mwatermark255的元素会将最后结果mendwatermark中对应位置的元素设置为255

        mendwatermark = mwatermark + msrc

        ImageBox3.Image = mendwatermark

    End Sub

运行后如下图所示:

 

图2-94 图像增加水印

除了直接相加外,还可以指定水印图像和源图像的权重再相加。

【代码位置:frmChapter2_S2】Button4_Click

    '图像水印

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

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

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        Dim mendwatermark As New Mat

        'AddWeighted指定权重系数

        Dim mendwatermark2 As New Mat

        CvInvoke.AddWeighted(msrc, 0.4, mwatermark, 0.2, 0, mendwatermark2)

        ImageBox3.Image = mendwatermark2

End Sub

运行后如下图所示:

图2-95 图像增加水印

彩色图像水印仍然采取分解图像通道,分别处理后再合并的做法:

【代码位置:frmChapter2_S2】Button5_Click

    '彩色图像水印

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

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

        ImageBox1.Image = msrc

        '水印文件,与源图像大小相同

        Dim mwatermark As New Mat("c:\learnEmgucv\watermark.jpg", ImreadModes.Grayscale)

        ImageBox2.Image = mwatermark

        CvInvoke.Threshold(mwatermark, mwatermark, 0, 255, ThresholdType.Binary)

        '分解每个通道

        Dim mchanel3() As Mat

        mchanel3 = msrc.Split()

        '每个通道计算后再合并

        Dim mv As New VectorOfMat

        For i As Integer = 0 To mchanel3.Length - 1

            Dim msingle As New Mat

            msingle = mchanel3(i) + mwatermark

            mv.Push(msingle)

        Next

        Dim result As New Mat

        CvInvoke.Merge(mv, result)

        ImageBox3.Image = result

End Sub

运行后如下图所示:

 

图2-96 彩色图像增加水印

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

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

相关文章

el-image 图片预览时 与 el-table (或avue-crud) 样式冲突 的解决

问题: 解决 <style scoped> ::v-deep(.el-table__cell) {position: static !important; } </style> 后效果

SD-WAN视频汇聚网关,帮助企业省去公网服务器费用与流量费用,低成本、高可靠建设视频汇聚与管控平台,助力视频企业级智能应用

在介绍方案之前&#xff0c;我们先算一笔账&#xff0c;传统的B端项目大多数的场景是&#xff1a; 1、多个分布在不同区域&#xff0c;不同网络的现场需要进行视频设备的统一汇聚管理&#xff1b; 2、多种不同类型厂家和型号的设备需要接入&#xff1b; 3、需要接入各种设备的实…

ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 ​编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…

Keepalived知识点整理

Keepalived知识点整理 高可用集群 keeaplived高可用集群集群类型系统可用性实现高可用VRRP:Virtual Router Redundancy ProtocolVRRP相关术语 keepalived简介keeplived架构配置文件组成部分配置文件主要部分的解释说明: 环境配置ka1ka2realserver1realserver2 实验1:实验2独立日…

jetson循环输入密码登录不进GUI桌面环境

大概安装了pip, opencv, nvidia-jetpack&#xff0c;添加了环境变量&#xff0c;重启后&#xff0c;Jetson orin nano 登录不进去GUI桌面系统&#xff0c;输入密码后&#xff0c;又出现登录界面要求输入密码&#xff0c;如此循环&#xff0c;没有其他报错。 注意到在启动界面有…

天地伟业入职智鼎测评题库:EQT情商测验、IQCAT思维能力自适应测验

天地伟业智鼎题库EQT情商测验 情商测验采用关键事件法提取和概括人们在社会生活中发生的情景了解作答者在面对典型的工作、生活情景时最可能采取的做法&#xff0c;考察作答者的情绪觉察、情绪调节、自我激励、同理心、社交技能这5种重要的情绪智力&#xff0c;在销售人员和管理…

与人打交道的七个绝招

与人打交道的七个绝招&#xff0c;学会了让你混得风生水起&#xff01; 一、跟强者打交道&#xff0c;别绕圈子。就事论事&#xff0c;直奔主题&#xff1b; 二、跟没钱的人打交道&#xff0c;就直接告诉他能挣多少钱&#xff1b; 三、跟小人打交道&#xff0c;越虚假越好&…

i.MX6裸机开发(2):LED灯——汇编实现

本章主要包括两部分&#xff0c;第一部分讲解i.MX6ULL的GPIO配置方法以及常用寄存器介绍&#xff0c; i.MX6ULL的GPIO配置方法与单片机稍有不同&#xff0c;我们将详细介绍这部分内容。 第二部分讲解具体的实现代码以及程序的编译下载。 学习重点&#xff1a; 掌握i.MX6ULL GP…

YOLOV8网络结构|搞懂Backbone-Conv

参数量计算: (输入通道*w)*(输出通道*w)*k^2+(输出通道*w)*2 w是模型缩放里面的width - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 输出通道c2=64,k=3,s=2 P1/2 特征图变小一半 先定义算子层 再搭一个forward前向传播 class Conv(nn.Module):"""Standard convo…

《Techporters架构搭建》-Day06 国际化

什么是国际化&#xff1f; 国际化&#xff0c;也叫i18n&#xff0c;为什么叫i18n呢&#xff1f; "i18n"是国际化&#xff08;internationalization&#xff09;的缩写&#xff0c;数字18代表了国际化这个单词中间的字母数量。类似这样的缩写还有k8s&#xff08;kube…

Ubuntu离线安装库并解决依赖关系

&#xff08;1&#xff09;起因 安装插件出现库未找到的错误 configure: error: curses library is required but not found.&#xff08;2&#xff09;解决方法 手动到Ubuntu的库发布网页下载 http://packages.ubuntu.com/ 选择系统对应架构的版本下载&#xff0c;然后上传…

AI语言大模型商业价值深度解析

点击蓝字 关注我 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;特别是深度学习算法的进步&#xff0c;AI语言大模型在自然语言处理领域的表现日益突出。国内外多种语言大模型如&#xff1a;OpenAi 的 ChatGpt&#xff0c;阿里通义千问&#xff0c;百度文心…

计算机网络之TCP序号,确认序号和报文传输时间

开篇提示 本篇适合于了解基础知识&#xff0c;进行扩展提高的使用&#xff0c;附带考研习题以及解析。 TCP序号和确认序号的区别 TCP首部中有序号和确认序号&#xff0c;他们都是4个字节&#xff08;4B&#xff09;&#xff0c;且在数据传输中有很重要的意义&#xff0c;那么两…

在Net8.0中使用 MQTTnet 开源库实现 MQTT 应用程序开发(实践)

1. 介绍 MQTTnet 是一个强大的开源 MQTT 客户端库&#xff0c;适用于 C# 平台。它提供了丰富的功能和灵活的 API&#xff0c;可以轻松地构建基于 MQTT 协议的应用程序。本文将逐步学习如何使用 MQTTnet 库创建 MQTT 客户端&#xff0c;并实现基本的发布、订阅功能。 简介 什么…

无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案

无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案 1.快速创建应用 你可以通过 3 种方式在 Dify 的工作室内创建应用: 基于应用模板创建(新手推荐) 创建一个空白应用 通过 DSL 文件(本地 / 在线)创建应用 从模板创建…

六级英语翻译

大纲解读 1. 考查方式&#xff1a;段落汉译英。 2. 涉及主题&#xff1a;中国的历史、文化、经济、社会发展等。 3. 篇幅&#xff1a;六级为180-200个汉字。 4. *卷面分&#xff1a;106.5 / 710。 5. *考试时长&#xff1a;30分钟。 第一步&#xff1a;Extracting&…

Nvidia AI 发布 Llama-Minitron 3.1 4B:通过修剪和提炼 Llama 3.1 8B 构建的新语言模型

Nvidia 刚刚发布了语言模型的新版本&#xff0c;不过这次是一个小型语言模型&#xff1a;Llama-3.1-Minitron 4B 模型。这意味着它是语言模型不断发展的重要步骤之一&#xff0c;通过剪枝和知识提炼等尖端技术&#xff0c;将大型模型的效率与小型模型相结合。 Llama-3.1-Minitr…

Qt动画效果、动画曲线

Qt动画效果 QPropertyAnimation *animation new QPropertyAnimation(labelWin, "geometry",this); // 创建胜利标签动画animation->setStartValue(labelWin->geometry()); // 设置动画的起始位置animation->setEndValue(QRect(labelWin->x(), labelW…

Servbay 1.40版支持MySQL了,快升级吧。

全新的服务管理界面及MySQL支持 现在&#xff0c;你可以在ServBay中使用MySQL了。除了带来全新的服务管理界面外&#xff0c;我们还为你带来了MySQL5.1-MySQL9.0的所有版本&#xff0c;满足你对数据管理的一切需求。 全新的数据库管理功能 通过新的数据库管理功能&#xff0c…

Datawhale AI 夏令营 第四期 AIGC Task3

活动简介 活动链接&#xff1a;Datawhale AI 夏令营&#xff08;第四期&#xff09; 以及AIGC里面的本次任务说明&#xff1a;Task 3 进阶上分-实战优化 这次任务呢&#xff0c;主要是对知识的一个讲解&#xff0c;包括ComfyUI工具的使用啊&#xff0c;以及LoRA的原理啊&…