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

    python图像二值化处理

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

    banner58(12).png

    一、图像二值化

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

    二、python图像二值化处理

    1.opencv简单阈值cv2.threshold

    2.opencv自适应阈值cv2.adaptiveThreshold

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

    3.Otsu's二值化

    三、示例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    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学习网