当前位置: 首页 > news >正文

实用指南:【OpenCV】图像处理实战:边界填充与阈值详解

目录

1.边界填充

2.图像的相关数值计算

3.图像融合

4.图像阈值


1.边界填充

用的函数都是copyMakeBorder,最后的参数是填充方法

2.图像的相关数值计算

每个像素点加10

[:5,:,0]只打印前面5行

add是直接等于两图像的像素点值之和,但是不可以超过255,超过255就等于255

3.图像融合

图像大小不一样不能融合

进行相应的转换

也可以将目标值设为(0,0),进行比例缩放

fx=4表示将x轴变为原来的4倍

fy=4表示将y轴变为原来的4倍

也可以缩放为其他倍数

0.4是cat图像的权重,0.6是dog图像的权重,0是偏置项(给图像提亮多少)

4.图像阈值

函数

cv2.threshold(src, thresh, maxval, type)

函数作用

cv2.threshold() 函数的主要功能是将灰度图像转换为二值图像。在转换过程中,会把图像中每个像素的值与设定的阈值进行比较,再依据比较结果为该像素赋予新的值。

参数解析

cv2.threshold(src, thresh, maxval, type) 函数包含 4 个参数,下面分别介绍:

  1. src:这是输入的图像,要求必须是单通道的灰度图像。如果传入的是彩色图像,需要先将其转换为灰度图。

  2. thresh:即设定的阈值,是一个浮点数或者整数。在比较时,会用图像中每个像素的值与这个阈值作对比。

  3. maxval:当像素值满足阈值条件时,会将该像素的值设为这个 maxval。它也是一个浮点数或者整数。

  4. type:表示阈值处理的类型,有多种选择,具体如下:

    1. cv2.THRESH_BINARY:二值阈值,若像素值大于阈值,则设为 maxval,否则设为 0。

    2. cv2.THRESH_BINARY_INV:反二值阈值,像素值大于阈值时设为 0,否则设为 maxval

    3. cv2.THRESH_TRUNC:截断阈值,像素值大于阈值时设为阈值,否则保持原像素值。

    4. cv2.THRESH_TOZERO:归零阈值,像素值大于阈值时保持不变,否则设为 0。

    5. cv2.THRESH_TOZERO_INV:反归零阈值,像素值大于阈值时设为 0,否则保持不变。

    6. cv2.THRESH_OTSU:大津法自动阈值,会自动计算最优阈值,使用时需将该标志和前面的阈值类型结合,例如 cv2.THRESH_BINARY + cv2.THRESH_OTSU

返回值

该函数会返回两个值:

  • ret:返回计算得到的阈值。如果使用了 OTSU 或 TRIANGLE 方法,就会返回自动计算出的阈值,否则返回设定的阈值。

  • dst:是处理后的输出图像,为二值图像。

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像并转换为灰度图
image = cv2.imread('example.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用不同的阈值处理
ret1, thresh1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
ret2, thresh2 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
ret3, thresh3 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC)
ret4, thresh4 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO)
ret5, thresh5 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV)
# 使用 OTSU 方法自动计算阈值
ret6, thresh6 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 显示结果
titles = ['Original', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV', 'OTSU']
images = [gray, thresh1, thresh2, thresh3, thresh4, thresh5, thresh6]
plt.figure(figsize=(12, 8))
for i in range(7):plt.subplot(2, 4, i+1)plt.imshow(images[i], 'gray')plt.title(titles[i])plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()

物体检测适合用 BINARY 类型,而图像降噪可考虑 TOZERO 类型。

http://www.zskr.cn/news/37022.html

相关文章:

  • 2025 年 11 月人造草坪足球场厂家最新推荐,产能、专利、环保三维数据透视!
  • SpiritConfigTool.jar 做什么的
  • MySQL 慢查询日志slow query log - 指南
  • 前端开发技术栈
  • DRL-QLearning与DQN
  • 再见了ThreadLocal,我决定用ScopedValue!
  • 查询增强插件pgfincore - 教程
  • 2025 年 11 月双锥回转真空干燥机,真空耙式干燥机,盘式干燥机厂家最新推荐,聚焦资质、案例、售后的六家机构深度解读
  • 2025 年 11 月高效沸腾干燥机,旋转闪蒸干燥机,空心桨叶干燥机厂家最新推荐,产能、专利、环保三维数据透视
  • LLM应用敏感数据防泄露指南:AI安全围栏筑牢企业自研AI应用安全防线
  • C++中`std::function`和`std::bind`的详细解析
  • k8s-应用部署和组件及常用命令(2)
  • Java桌面应用开发:JavaFX模块化与响应式
  • 【Linux 高效的系统】文件系统与软硬件连接
  • Pinely Round 5 (Div. 1 + Div. 2) A+B+C+D
  • ubuntu24 主题体验经验
  • 不使用 AAudio 的前提下,降低 Android 音频传输延时的方案
  • 深入解析:dmfldr快速装载工具使用
  • 任务---网络通信组件JsonRpc
  • CodeForces-2138B Antiamuny Wants to Learn Swap
  • EVA 个人总结
  • 背单词 纯英文 2025年11月
  • 多车轨迹规划
  • 2025 年 11 月酒店加盟公司最新推荐,聚焦高端定制需求与全案交付能力
  • 2025 年 11 月酒店加盟公司最新推荐,聚焦资质、案例、售后的五家酒店深度解读
  • React Hooks 实现表单验证
  • 一种单选的视线,但是实际的ui现实不出来
  • 量子计算技术全景:从硬件路线到AI融合 - 教程
  • 【Web安全】转义字符注入?转义也会失效的SQL注入 - 指南
  • isulad容器使用教程