OpenCV基础

3.2自适应阈值

运行截图

复制代码
import cv2
from matplotlib import pyplot as plt

# 读取图像
im1 = cv2.imread("./image/qp.jpg")

# 检查图像是否成功加载
if im1 is None:
    print("Error: Image not found or unable to read.")
    exit()

# 转换为灰度图
gray = cv2.cvtColor(im1, cv2.COLOR_BGR2GRAY)

# 应用全局阈值
ret, th1 = cv2.threshold(gray, 66, 255, cv2.THRESH_BINARY)

# 应用自适应阈值(均值)
th2 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
                            cv2.THRESH_BINARY, 11, 2)

# 应用自适应阈值(高斯)并反二值化
th3 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                            cv2.THRESH_BINARY_INV, 11, 2)

# 设置标题列表(修正拼写错误)
titles = ["Original", "TH_BINARY", "TH_ADAPTIVE_MEAN_C", "TH_ADAPTIVE_GAUSSIAN_C_INV"]
images = [im1, th1, th2, th3]

# 使用matplotlib显示图像
for i in range(4):
    plt.subplot(2, 2, i + 1)
    plt.imshow(images[i], cmap='gray')  # 使用cmap='gray'来指定灰度颜色映射
    plt.title(titles[i])
    plt.axis('off')  # 关闭坐标轴

plt.tight_layout()  # 调整子图布局
plt.show()
  • ret, th1 = cv2.threshold(gray, 66, 255, cv2.THRESH_BINARY):对灰度图像gray进行全局二值化阈值处理。
    • 66是设定的阈值。
    • 255是最大值。
    • cv2.THRESH_BINARY表示阈值类型为二值化,即大于阈值的像素设置为最大值255(白色),小于等于阈值的像素设置为0(黑色),处理结果存储在th1中,ret是返回的阈值(这里未使用)。
    • th2 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2):对灰度图像gray进行自适应阈值处理,采用均值方法。
      • 255是最大值。
      • cv2.ADAPTIVE_THRESH_MEAN_C表示自适应阈值类型为均值。
      • cv2.THRESH_BINARY表示阈值类型为二值化。
      • 11是邻域大小,即计算阈值时考虑的像素邻域大小。
      • 2是从均值或加权均值中减去的常数,用于调整阈值,处理结果存储在th2中。
      • th3 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2):对灰度图像gray进行自适应阈值处理,采用高斯方法,并进行反二值化。
        • 255是最大值。
        • cv2.ADAPTIVE_THRESH_GAUSSIAN_C表示自适应阈值类型为高斯。
        • cv2.THRESH_BINARY_INV表示阈值类型为反二值化,即大于阈值的像素设置为0,小于等于阈值的像素设置为255
        • 11是邻域大小。
        • 2是从加权均值中减去的常数,处理结果存储在th3中。
相关推荐
子夜江寒27 分钟前
基于 OpenCV 的图像形态学与边缘检测
python·opencv·计算机视觉
saoys30 分钟前
Opencv 学习笔记:创建与原图等尺寸的空白图像
笔记·opencv·学习
工藤学编程1 小时前
零基础学AI大模型之LangChain智能体之initialize_agent开发实战
人工智能·langchain
king王一帅2 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
泰迪智能科技5 小时前
分享|职业技术培训|数字技术应用工程师快问快答
人工智能
Dxy12393102166 小时前
如何给AI提问:让机器高效理解你的需求
人工智能
少林码僧7 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)7 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
没学上了7 小时前
CNNMNIST
人工智能·深度学习
宝贝儿好7 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人