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

网站前台怎么套用织梦后台横泉水库建设管理局网站

网站前台怎么套用织梦后台,横泉水库建设管理局网站,wordpress 浏览量排序,温州网站建设对比版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的C#版本请访问:图像分割-Grabcut法(C#)-CSDN博客 GrabCut是一种基于图像分割的技术,它可以用于将图像…

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

本文的C#版本请访问:图像分割-Grabcut法(C#)-CSDN博客

GrabCut是一种基于图像分割的技术,它可以用于将图像中的前景和背景分离。在实现中,GrabCut算法通常需要使用高斯混合模型(GMM)来建立前景和背景的概率分布,以便更好的估计像素的标签。同时,还需要考虑如何处理边界处的像素,以避免边界处的像素被错误地分类。GrabCut算法在图像分割中有着广泛的应用,例如人像分割、物体抠图等。

EmguCV使用CvInvoke.GrabCut方法来执行GrabCut算法,该方法声明如下:

Public Shared Sub GrabCut (

         img As IInputArray,

         mask As IInputOutputArray,

         rect As Rectangle,

         bgdModel As IInputOutputArray,

         fgdModel As IInputOutputArray,

         iterCount As Integer,

         type As GrabcutInitType

)

参数说明:

  1. img:输入输出的图像,必须是三通道彩色图像。
  2. mask:指定的掩码图像,必须是单通道灰度图像,并且与输入图像具有相同的尺寸。可以传入0-3的值,分别为:0表示明显为背景的像素、1表示冥相位前景的像素、2表示可能为背景的像素、3表示可能为前景的像素。
  3. rect:指定的矩形框,用于定位大概率可能为前景目标的位置。
  4. bgdModel:背景模型,必须是单通道浮点型Mat。
  5. fgdModel:前景模型,必须是单通道浮点型Mat。
  6. iterCount:迭代次数,用于控制算法的收敛性。
  7. type:GrabCut算法初始化类型,可以选择GrabCutInitType.WithRect或GrabCutInitType.WithMask,分别表示根据提供的矩形初始化或根据掩码初始化。

该方法没有返回值,而是直接在mask图像上进行前景分割操作,最终获得的mask包含0-3的值,含义如参数中说明。

    'Grabcut法 Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.ClickDim m As New Mat("C:\learnEmgucv\tower.jpg", ImreadModes.AnyColor)Dim result As New MatDim bg As New MatDim fg As New MatDim rect As New Rectangle(80, 30, 680, 450)CvInvoke.GrabCut(m, result, rect, bg, fg, 1, GrabcutInitType.InitWithRect)'输出的result只有4个值:'0:确定背景'1:确定前景'2:可能背景'3:可能前景'演示框选范围CvInvoke.Rectangle(m, rect, New MCvScalar(255, 255, 255), 1)ImageBox1.Image = m'标记区域Dim matr As New Matrix(Of Byte)(result.Rows, result.Cols)result.CopyTo(matr)For i As Integer = 0 To matr.Cols - 1For j As Integer = 0 To matr.Rows - 1'将确定背景和可能背景标记为0,否则为255If matr(j, i) = 0 Or matr(j, i) = 2 Thenmatr(j, i) = 0Elsematr(j, i) = 255End IfNextNextDim midm As New Matmidm = matr.Mat'显示标记的图像CvInvoke.Imshow("midm", midm)'灰度转为彩色Dim midm1 As New MatCvInvoke.CvtColor(midm, midm1, ColorConversion.Gray2Bgr)Dim mout As New Mat'And运算CvInvoke.BitwiseAnd(m, midm1, mout)CvInvoke.Imshow("mout", mout)
End Sub

输出结果如下图所示:

图8-5 Grabcut法分离前景

   'Grabcut法 Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.ClickDim m As Mat = CvInvoke.Imread("C:\learnEmgucv\tower.jpg", CvEnum.ImreadModes.Color)Dim result As New MatDim bg As New MatDim fg As New MatDim rect As New Rectangle(80, 30, 680, 450)CvInvoke.GrabCut(m, result, rect, bg, fg, 5, CvEnum.GrabcutInitType.InitWithRect)Dim src As Image(Of Bgr, Byte) = m.ToImage(Of Bgr, Byte)Dim dst As New Image(Of Bgr, Byte)(New Size(src.Width, src.Height))Dim mask As Image(Of Gray, Byte) = result.ToImage(Of Gray, Byte)'直接操作Image像素点For i As Integer = 0 To src.Rows - 1For j As Integer = 0 To src.Cols - 1'如果是确定前景和可能前景,直接保留原像素点颜色,否则为黑色If mask.Data(i, j, 0) = 1 Or mask.Data(i, j, 0) = 3 Thendst.Data(i, j, 0) = src.Data(i, j, 0)dst.Data(i, j, 1) = src.Data(i, j, 1)dst.Data(i, j, 2) = src.Data(i, j, 2)Elsedst.Data(i, j, 0) = 0dst.Data(i, j, 1) = 0dst.Data(i, j, 2) = 0End IfNextNextImageBox1.Image = dst
End Sub

输出结果如下图所示:

图8-6 Grabcut法分离前景

   '标记为确定前景,这里使用InitWithMask 参数Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.ClickDim m As New Mat("c:\learnEmgucv\lena.jpg", ImreadModes.AnyColor)Dim mask As New MatDim bg As New MatDim fg As New MatDim rect As New Rectangle(80, 30, 340, 480)'使用前景为全白色Dim m1 As New Mat("c:\learnEmgucv\lena_fillwhite.jpg", ImreadModes.Grayscale)Dim mask1 As New Mat'二值化CvInvoke.Threshold(m1, mask1, 250, 1, ThresholdType.Binary)CvInvoke.Rectangle(m, rect, New MCvScalar(255, 255, 255), 1)'标记之后再调用GrabCut,使用InitWithMask参数CvInvoke.GrabCut(m, mask1, rect, bg, fg, 2, GrabcutInitType.InitWithMask)Dim matrx As New Matrix(Of Byte)(mask1.Rows, mask1.Cols)mask1.CopyTo(matrx)For i As Integer = 0 To matrx.Cols - 1For j As Integer = 0 To matrx.Rows - 1If matrx(i, j) = 0 Or matrx(i, j) = 2 Thenmatrx(i, j) = 0Elsematrx(i, j) = 255End IfNextNextDim midm2 As New Matmidm2 = matrx.MatDim midm1 As New MatCvInvoke.CvtColor(midm2, midm1, ColorConversion.Gray2Bgr)Dim mout As New MatCvInvoke.BitwiseAnd(m, midm1, mout)CvInvoke.Imshow("mout", mout)
End Sub

输出结果如下图所示:

图8-7 Grabcut法分离前景

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

http://www.yayakq.cn/news/681189/

相关文章:

  • 便宜网站建设模板网站什么网站可以做护考题
  • 酒店网站建设价格不干胶印刷网站建设
  • app网站制作要多少钱怎么做网页推广
  • 模板网站做外贸好不好网站建设与管理计划
  • 在线销售型网站网站是软件吗
  • 网站指向ip列表是什么wordpress进不去了
  • 网站设计网络推广关键词wordpress陶哲轩
  • 简述如何让网站排名快速提升网页app生成器最新版
  • 桂林做网站多少钱北京网站建设 标准型 新翼
  • 娱乐网站排行榜建设公积金网站
  • 企业手机网站建设联系方式软件开发一般用什么软件
  • 企业网站访问对象有哪些河南建一个网站大概要多少钱
  • 云建站网址网站搜索系统
  • 怎么做网站排版湘西网站建设花垣
  • 自己做的网站出现乱码能源公司网站建设
  • 网站建设电销话术范文互助平台网站建设费用
  • 做外贸好的网站成都h5网站建设
  • 可以做问答的网站给个网站做导航违法吗
  • 开原网站开发信息网站建设汇报
  • 怎么做网站的超级链接网站优化计划
  • 速橙科技有限公司网站建设广东省建筑安全员证查询官网
  • 河池市住房与城市建设部网站seo先上排名后收费
  • 用符号做照片的网站四川宜宾市网站建设公司
  • 做网站手机模板app系统下载官网
  • 网站添加二级域名seo从入门到精通
  • 网站开发是前端开发吗电子商务网站建设实训方案
  • 运城网站建设兼职口碑营销的案例有哪些
  • 可以发锚文本的网站机械技术支持 东莞网站建设
  • 毕设做网站需要发布到浏览器吗优秀网站设计有哪些
  • 网站情况建设说明书纸牌网站建设