如何使用Python OpenCV执行图像的不同简单阈值处理?

 

简单阈值处理 中,我们定义一个阈值,如果像素值大于阈值,则将其分配值(例如255),否则将其分配另一个值(例如0)。

可以使用函数 cv2.threshold() 应用简单阈值处理。它接受四个参数–源图像,阈值,maxVal和阈值类型。

OpenCV 提供以下不同类型的阈值处理–

  • cv2.THRESH_BINARY – 在此阈值处理中,像素值大于阈值的像素值被分配为255,否则被分配为0。
  • cv2.THRESH_BINARY_INV – 它是cv2.THRESH_BINARY的相反情况。

  • cv2.THRESH_TRUNC – 在此阈值处理中,像素值高于阈值被分配为阈值,其他像素保持不变。

  • cv2.THRESH_TOZERO – 在此阈值处理中,像素值低于阈值被分配为零,其他像素保持不变。

  • cv2.THRESH_TOZERO_INV – cv2.THRESH_TOZERO的相反情况。

语法

cv2.threshold(img,thresh_val,max_val,thresh_type)

参数

  • img –输入灰度图像。它是 numpy.ndarray 。

  • thresh_val –用于分类像素值的阈值。如果像素值高于阈值,则将其分配一个值,否则将另一个值分配给它。

  • max_val –如果像素值高于(有时低于)阈值,则分配给像素的最大值。

  • thresh_type –要应用的阈值类型。

它返回全局阈值和阈值图像。

让我们通过一些Python示例来理解不同的简单阈值处理。

输入图像

下面这张图片将作为以下示例的输入文件。

如何使用Python OpenCV执行图像的不同简单阈值处理?

示例1

在此程序中,我们对输入图像应用二进制阈值处理。

# Python program to illustrate
# a simple thresholding type on an image
# import required libraries
import cv2

# read the input image as a gray image
img = cv2.imread('floor.jpg', 0)

# applying binary thresholding technique on the input image
# all pixels value above 127 will be set to 255
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

# display the image after applying binary thresholding
cv2.imshow('Binary Threshold', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

当您运行上述程序时,它将生成以下输出。

如何使用Python OpenCV执行图像的不同简单阈值处理?

以上输出显示了应用 二进制阈值处理 后的阈值图像。

示例2

在此程序中,我们将在输入图像上应用不同的 简单阈值处理 。

# Python程序:在图像上应用简单阈值类型
# 导入必要的库
import cv2
import matplotlib.pyplot as plt

# 将输入图像读取为灰度图像
img = cv2.imread('floor.jpg',0)
# 在输入图像上应用不同的阈值技术
ret1, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret2, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
ret3, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
ret4, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
ret5, thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['原始图像','二进制','二进制反转','TRUNC','TOZERO','TOZERO_INV']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5]

for i in range(6):
   plt.subplot(2,3,i+1)
   plt.imshow(images[i], 'gray')
   plt.title(titles[i])
   plt.axis("off")
plt.show()

输出

运行上述Python程序时,将产生以下输出。

如何使用Python OpenCV执行图像的不同简单阈值处理?

上面的输出显示在应用不同的简单阈值后显示的不同图像。

为帮助更多对人工智能感兴趣的小伙伴们能够有效的系统性的学习以及论文的研究,小编特意制作整理了一份人工智能学习资料给大家,整理了很久,非常全面。

大致内容包括一些人工智能基础入门视频和文档+AI常用框架实战视频、计算机视觉、机器学习、图像识别、NLP、OpenCV、YOLO、pytorch、深度学习与神经网络等学习资料、课件源码、国内外知名精华资源、以及AI热门论文等全套学习资料。


需要以上这些文中提到的资料,请点击此处→【人工智能全套完整VIP资料】即可免费获取。

 

看完三件事❤️

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注作者公众号 『 python深度学习NLP 』,不定期分享原创知识。
  • 关注后回复【666】扫码即可获取学习资料包。
  • 同时可以期待后续文章ing🚀。
     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值