geekdoc-python-zh/docs/askpython/image-thresholding.md

3.9 KiB
Raw Permalink Blame History

Python 中的图像阈值处理——简单快速指南

原文:https://www.askpython.com/python/examples/image-thresholding

嘿,程序员朋友!今天,我们将了解什么是图像阈值,以及如何在 python 编程语言中实现图像阈值。

让我们直接进入概念!

也读作: 利用 Python 进行图像中的边缘检测

什么是图像阈值处理?

Thresholding定义为将图像分为两部分的过程,即:“前景”和“背景”。它主要用于各种图像处理任务,允许更好的图像识别和分割等。

不同类型的阈值技术

人们可以实现各种阈值技术,这些技术在下面被命名和描述:

| 序列号 | 阈值技术名称 | 功能名称 | 描述 | | one | 二元阈值 | cv2。THRESH_BINARY | 1.(像素强度) >设置阈值:255(白色) 2。否则设置为 0(黑色)。 | | Two | 二元反向阈值 | cv2。阈值 _ 二进制 _INV | cv2 的反例。THRESH_BINARY。 | | three | 零阈值 | cv2.THRESH_TOZERO | 1.(像素强度)< set threshold value : 0 (black) 2。否则将其设置为白色 | | four | 零反转阈值 | S7-1200 可编程控制器 | cv2 的反例。阈值为零 | | five | 截断阈值 | cv2。TRUNC 阈值 | 1.(像素强度) >阈值:截断到阈值。 2。像素值被设置为与阈值相同。 3。所有其他值保持不变。 |

Various Thresholding Techniques


也读: Python:将图像转换成铅笔素描

完整的代码

由于阈值方法具有用于实现的直接函数,我们可以直接查看阈值方法的代码实现。我希望你理解同样的编码实现。

import cv2  
import numpy as np

img = cv2.imread('lori.jpg')  
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

ret, thresh_hold = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY) 
ret, thresh_hold1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY_INV) 
ret, thresh_hold2 = cv2.threshold(img, 100, 255, cv2.THRESH_TOZERO) 
ret, thresh_hold3 = cv2.threshold(img, 100, 255, cv2.THRESH_TOZERO_INV) 
ret, thresh_hold4 = cv2.threshold(img, 100, 255, cv2.THRESH_TRUNC)   

thresh_hold = cv2.resize(thresh_hold, (960, 540))    
cv2.imshow('Binary Threshold Image', thresh_hold) 

thresh_hold1 = cv2.resize(thresh_hold1, (960, 540))    
cv2.imshow('Binary Threshold Inverted Image', thresh_hold1) 

thresh_hold2 = cv2.resize(thresh_hold2, (960, 540))    
cv2.imshow('Threshold Tozero Image', thresh_hold2) 

thresh_hold3 = cv2.resize(thresh_hold3, (960, 540))    
cv2.imshow('ThresholdTozero Inverted output', thresh_hold3) 

thresh_hold4= cv2.resize(thresh_hold4, (960, 540))    
cv2.imshow('Truncated Threshold output', thresh_hold4) 

if cv2.waitKey(0) & 0xff == 25:  
    cv2.destroyAllWindows()


样本输出1

1.原始图像输出

Lori

Lori

2.二值阈值图像输出

Binary Threshold Image

Binary Threshold Image

3.二进制反转阈值图像输出

Binary Inverted Threshold Image

Binary Inverted Threshold Image

4.阈值到零输出

Threshold Tozero Image

Threshold Tozero Image

5.阈值归零反相输出

Threshold Tozero Inverted Image

Threshold Tozero Inverted Image

6.截断阈值图像输出

Truncated Threshold Image

Truncated Threshold Image


样本输出2

Threshold Sample Output 2

Threshold Sample Output 2


结论

最后,我想让你自己尝试对不同的图像进行阈值处理,看看不同图像的输出结果。感谢您的阅读!

快乐学习!