• 技术文章 >常见问题 >Python常见问题

    python图像二值化处理

    2021-04-01 16:04:07原创7173

    banner58(12).png

    一、图像二值化

    图像二值化是指将图像上像素点的灰度值设定为0或255,即整个图像呈现明显的黑白效果的过程。

    二、python图像二值化处理

    1.opencv简单阈值cv2.threshold

    2.opencv自适应阈值cv2.adaptiveThreshold

    有两种方法可用于计算自适应阈值:mean_c和guassian_c

    3.Otsu's二值化

    三、示例:

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
     
    img = cv2.imread('scratch.png', 0)
    # global thresholding
    ret1, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
    # Otsu's thresholding
    th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
    # Otsu's thresholding
    # 阈值一定要设为 0 !
    ret3, th3 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    # plot all the images and their histograms
    images = [img, 0, th1, img, 0, th2, img, 0, th3]
    titles = [
      'Original Noisy Image', 'Histogram', 'Global Thresholding (v=127)',
      'Original Noisy Image', 'Histogram', "Adaptive Thresholding",
      'Original Noisy Image', 'Histogram', "Otsu's Thresholding"
    ]
    # 这里使用了 pyplot 中画直方图的方法, plt.hist, 要注意的是它的参数是一维数组
    # 所以这里使用了( numpy ) ravel 方法,将多维数组转换成一维,也可以使用 flatten 方法
    # ndarray.flat 1-D iterator over an array.
    # ndarray.flatten 1-D array copy of the elements of an array in row-major order.
    for i in range(3):
      plt.subplot(3, 3, i * 3 + 1), plt.imshow(images[i * 3], 'gray')
      plt.title(titles[i * 3]), plt.xticks([]), plt.yticks([])
      plt.subplot(3, 3, i * 3 + 2), plt.hist(images[i * 3].ravel(), 256)
      plt.title(titles[i * 3 + 1]), plt.xticks([]), plt.yticks([])
      plt.subplot(3, 3, i * 3 + 3), plt.imshow(images[i * 3 + 2], 'gray')
      plt.title(titles[i * 3 + 2]), plt.xticks([]), plt.yticks([])
    plt.show()

    关于图像二值化相关知识点推荐查看:

    python全局图像二值化

    如何二值化图像

    更多python学习欢迎进入python学习网,免费分享python学习教程和视频!

    专题推荐:python 图像二值化
    上一篇:python图像处理是啥 下一篇:python如何读取大文件

    相关文章推荐

    • Python是什么?• Python可以用来做什么?• Python是如何编译运行的• Python中的import是怎么实现的?• Python中__new__()和__init__()有什么区别?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网