全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

python图像二值化处理

发布时间:2022-08-17 17:38:00
发布人:qyf

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, 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培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

强化学习中on-policy与off-policy有什么区别?

强化学习中on-policy与off-policy有什么区别?

2023-10-14
为什么交叉熵可以用于计算代价?

为什么交叉熵可以用于计算代价?

2023-10-14
开发网上平台的大概流程有什么?

开发网上平台的大概流程有什么?

2023-10-14
脚本语言和编程语言有什么区别?

脚本语言和编程语言有什么区别?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取