python图像二值化处理

美女程序员鼓励师

一、图像二值化

图像二值化是指将图像上像素点的灰度值设定为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, th2 = 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, th2, 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图像二值化处理 的全部内容, 来源链接: utcz.com/z/544153.html

回到顶部