基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】(上))

简介: 基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】

文章目录

🍹1. 什么是阈值处理?


🍹2.二值化处理 与 反二值化处理


🍹3. 零处理


🍹4. 截断处理


🍹5.五种处理方式汇总


🍹6. 自适应处理


✨平均法 cv2.ADAPTIVE_THRESH_MEAN_C


✨高斯法 cv2.ADAPTIVE_THRESH_GAUSSIAN_C


🍹7. Otsu方法

🍹1. 什么是阈值处理?

在图像处理中,阈值处理是一种很重要的处理方式。阈值处理即给像素值设定一个阈值,然后所有的像素值都与目标阈值进行比较,根据像素值与阈值的关系,对像素值做出相应的调整,以达到影响图片的效果的预期。在计算机视觉技术中心,阈值处理十分重要,像素在经过阈值处理后,对肉眼观感可能不会太好,但是对程序而言图片上的人或物则通常更容易被搜寻到特征,以被识别出。从而实现识别的目的。


阈值处理常用的方法:threshold()方法。

✨其语法如下:

threshold(src, thresh, maxval, type, dst=None)


  • src: 原图
  • thresh: 阈值
  • maxval: 阈值处理采用的最大值,通常选择255作为最大值,即白色。
  • type: 阈值处理类型。


 常用的阈值处理类型

类型

含义

cv2.THRESH_BINARY

二值化阈值处理

cv2.THRESH_BINARY_INY

反二值化阈值处理

cv2.THRESH_TOZERO

低于阈值零处理

cv2.THRESH_TOZERO_INV

超出阈值零处理

cv2.THRESH_TRUNC

截断阈值处理

 

🍹2.二值化处理 与 反二值化处理

二值化处理,也称二值化阈值处理,该处理使每个像素值与指定的阈值相比较,大于阈值的像素变为最大值,小于阈值的像素值变为零。最终可以使像素只保留两种像素值,得到“非黑即白”的图像(不同与灰度处理)。


反二值化处理的处理结果与二值化处理相反,得到的也是只有黑白两种颜色的图像,不同之处在于大于阈值的像素值变为0,小于阈值的变为阈值处理采用的最大值。


下面,对二值化处理的方式进行示例,

选择图片素材:

   ✨梵高 《向日葵》✨

1.png


以127作为阈值,255为阈值处理最大值为例,读取图像时,需要先将图像转化为灰度图像。

import cv2
# 将图像读成灰度图像
img = cv2.imread("sunflowers.jpg", 0)  
# 做二值化处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 其中返回的t即我们选择的阈值127。
cv2.imshow('dst', dst) 
cv2.waitKey() 
cv2.destroyAllWindows() 

处理效果:

1.png

👇同理,再对《向日葵》做反二值化处理

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 反二值化阈值处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

🍹3. 零处理

零处理包括 低于阈值零处理 超出阈值零处理(也称低阈值零处理和高阈值零处理)。低于阈值零处理将低于阈值的像素值变为0,超出阈值零处理则将高于阈值的像素值变为0。

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 低于阈值零处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 超出阈值零处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

👇超阈值零处理效果呈现:

image.png

🍹4. 截断处理

截断处理也称截断阈值处理,将大于阈值的像素值变成跟阈值一样,小于阈值的像素值则保持不变。

截断处理后图像的整体颜色会变暗,亮度降低,原本浅色区域的颜色会变更浅。


代码示例如下:

import cv2
# 将图像读成灰度图像
img = cv2.imread("sunflowers.jpg", 0)
# 截断处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

目录
相关文章
|
6天前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
15 2
|
1天前
|
Python
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
|
1天前
|
数据采集 Python
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
2024年Python最新【Python基础教程】快速找到多个字典中的公共键(key)的方法,秋招面试问题
|
1天前
|
程序员 PHP Python
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
2024年Python最全Python基础教程:keys()、values()和 items()方法,百度面试题php
|
1天前
|
SQL 分布式计算 算法
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用
|
1天前
|
缓存 Java Python
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用(1)
python-静态方法staticmethod、类方法classmethod、属性方法property_python staticmethod类内使用(1)
|
6天前
|
Serverless Python
Python----图像的手绘效果
Python----图像的手绘效果
8 1
|
6天前
|
机器学习/深度学习 算法 算法框架/工具
带你一文搞懂CNN以及图像识别(Python)
带你一文搞懂CNN以及图像识别(Python)
20 1
|
6天前
|
机器学习/深度学习 人工智能 算法
图像识别:Python 与计算机视觉
在当今的数字时代,图像识别技术已经成为了许多领域的重要组成部分,包括计算机视觉、人工智能和机器学习等。Python 作为一种强大的编程语言,提供了丰富的工具和库,使开发者能够轻松地进行图像识别任务。在本文中,我们将探讨图像识别技术的基本原理,介绍一些常用的 Python 库,并通过一个简单的示例来展示如何使用这些库进行图像识别。
|
机器学习/深度学习 算法 数据可视化
一文弄懂CNN及图像识别(Python)
一文弄懂CNN及图像识别(Python)