当前位置:   article > 正文

VB.net 简单的处理图片,黑白(类库——7)_vb.net 图像去背景

vb.net 图像去背景

 我们看,这一张图片使我们用手机拍的图片,不经过处理,打印出来就是灰的

Photoshop里可以通过调整色阶,选择黑色的再选择白色的,就可以清晰化了

 拍照时注意摊平,我这是扫描的彩色模式,作为测试

VB.net如何处理 

本文参考的csdn大佬的文章,vb.net 教程 5-15 图像处理之内存处理6就改了一个参数

import:

  1. Imports System.Drawing
  2. Imports System.Drawing.Imaging
  3. Imports System.Runtime.InteropServices

写函数:value可以自己调节,不一定只是180

  1. ''' <summary>
  2. ''' 图片黑白处理,记得使用多线程调用函数
  3. ''' </summary>
  4. ''' <param name="value">黑白数值常量,建议从128开始调,范围为0~255(byte)</param>
  5. ''' <param name="bmp">要处理的图片</param>
  6. ''' <returns>处理后的图片</returns>
  7. Public Function BlackWhite(value As Byte, bmp As Bitmap)
  8. Dim destImg As New Bitmap(bmp.Width, bmp.Height)
  9. Dim sourceData As BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb)
  10. Dim destData As BitmapData = destImg.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb)
  11. Dim pSource As IntPtr = sourceData.Scan0
  12. Dim allBytes As Integer = sourceData.Stride * sourceData.Height
  13. Dim rgbvalues() As Byte
  14. ReDim rgbvalues(allBytes - 1)
  15. Marshal.Copy(pSource, rgbvalues, 0, allBytes)
  16. Dim pos As Integer = 0
  17. Dim R, G, B As Integer
  18. Dim avgValue As Integer
  19. For j As Integer = 0 To sourceData.Height - 1
  20. For i As Integer = 0 To sourceData.Width - 1
  21. B = rgbvalues(pos)
  22. G = rgbvalues(pos + 1)
  23. R = rgbvalues(pos + 2)
  24. avgValue = (B + G + R) / 3
  25. If avgValue >= value Then avgValue = 255 Else avgValue = 0
  26. rgbvalues(pos) = avgValue
  27. rgbvalues(pos + 1) = avgValue
  28. rgbvalues(pos + 2) = avgValue
  29. pos += 3
  30. Next
  31. pos = pos + sourceData.Stride - sourceData.Width * 3
  32. Next
  33. Dim pDest As IntPtr = destData.Scan0
  34. Marshal.Copy(rgbvalues, 0, pDest, allBytes)
  35. bmp.UnlockBits(sourceData)
  36. destImg.UnlockBits(destData)
  37. Return destImg
  38. End Function

 调用:

  1. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
  2. Pic.Image = GDI.BlackWhite(180, New Bitmap("C:\Users\Administrator\Desktop\example.jpg"))
  3. End Sub

效果很好,可以去除一些褶皱,多余的背景

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/125193
推荐阅读
相关标签
  

闽ICP备14008679号