c++图像处理-----自适应阈值操作:`cv::adaptiveThreshold()`

news2025/2/22 3:43:03

自适应阈值操作:cv::adaptiveThreshold()

cv::adaptiveThreshold()是OpenCV库中的一个函数,用于图像处理中的自适应阈值二值化操作。这个函数通常用于将灰度图像转换为二值图像,其中每个像素的阈值是根据其周围邻域的像素值自动确定的,从而使图像在不同光照条件下能够获得更好的二值化结果。

以下是cv::adaptiveThreshold()函数的一般用法和参数:

void cv::adaptiveThreshold(
    cv::InputArray src,          // 输入灰度图像
    cv::OutputArray dst,         // 输出二值图像
    double maxValue,             // 高于阈值的像素值
    int adaptiveMethod,          // 自适应阈值算法
    int thresholdType,           // 阈值类型
    int blockSize,               // 邻域大小
    double C                     // 从均值中减去的常数
);
  • src: 输入灰度图像。
  • dst: 输出二值图像。
  • maxValue: 高于阈值的像素值,通常为255。
  • adaptiveMethod: 自适应阈值算法,可以是cv::ADAPTIVE_THRESH_MEAN_C(根据邻域均值确定阈值)或cv::ADAPTIVE_THRESH_GAUSSIAN_C(根据邻域加权平均确定阈值)。
  • thresholdType: 阈值类型,通常为cv::THRESH_BINARYcv::THRESH_BINARY_INV,分别表示二值化和反二值化。
  • blockSize: 邻域大小,用于计算自适应阈值。
  • C: 从均值中减去的常数,可以调整阈值的灵敏度。

使用这个函数,你可以根据图像的局部信息自动确定每个像素的阈值,从而获得更好的二值化结果。不同的参数选择会产生不同的效果,你可以根据你的具体需求进行调整。

以下是一个使用cv::adaptiveThreshold()函数的C++示例,该示例演示了如何将输入灰度图像进行自适应阈值二值化处理:

include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 读取输入图像
    cv::Mat srcImage = cv::imread("1.jpg", cv::IMREAD_GRAYSCALE);

    if (srcImage.empty()) {
        std::cerr << "Error: Could not read the input image." << std::endl;
        return -1;
    }

    // 创建输出图像
    cv::Mat dstImage;

    // 定义自适应阈值二值化参数
    int blockSize = 11; // 邻域大小
    double maxValue = 255.0; // 高于阈值的像素值
    int adaptiveMethod = cv::ADAPTIVE_THRESH_MEAN_C; // 自适应方法
    int thresholdType = cv::THRESH_BINARY; // 阈值类型
    double C = 2.0; // 从均值中减去的常数

    // 应用自适应阈值二值化
    cv::adaptiveThreshold(srcImage, dstImage, maxValue, adaptiveMethod, thresholdType, blockSize, C);

    // 显示原始图像和处理后的图像
    cv::imshow("Original Image", srcImage);
    cv::imshow("Adaptive Threshold Image", dstImage);

    cv::waitKey(0);

    return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(2023|CVPR,中文,扩散,知识增强,去噪专家组合)ERNIE-ViLG 2.0:利用知识增强的去噪专家组合改进文本到图像扩散模型

ERNIE-ViLG 2.0: Improving Text-to-Image Diffusion Model with Knowledge-Enhanced Mixture-of-Denoising-Experts 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 …

Windows 进程监视工具

Windows 进程监视器是一种工具&#xff0c;可帮助 IT 管理员监视其 Windows IT 基础结构终结点中的关键进程&#xff0c;并确保其持续可用性、一致的运行状况和最佳性能。通过主动监视关键服务&#xff0c;Windows 进程监视器可帮助 IT 管理员确保其 Windows 进程不会意外关闭或…

纯 CSS 实现瀑布流布局的方法

纯 CSS 实现瀑布流布局的方法 这种方式兼容性不是很好&#xff0c;全部支持需要些时间&#xff0c;但是目前是可以使用 css 写出来的 display: grid; grid-template-columns: repeat(4, 1fr); grid-gap: 10px; grid-template-rows: masonry;全部的 css .container {display:…

C语言中的文件操作函数

C语言中的文件操作函数_c语言文件操作函数_点子李的博客-CSDN博客C语言文件操作_c语言文件操作函数https://blog.csdn.net/qq_53332052/article/details/128470575?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1-128470575-blog-125…

【ROS】ros-noetic和anaconda联合使用(1)

【ROS】ros-noetic和anaconda联合使用&#xff08;1&#xff09; 文章目录 【ROS】ros-noetic和anaconda联合使用&#xff08;1&#xff09;1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1.…

Liunx系统管理的引导过程与服务控制

引导过程&#xff1a; liunx系统的开机过程&#xff1a; 开机自检(BIOS):linux主机开机之后&#xff0c;根据主板BIOS中的设备&#xff0c;对CPU内存 显卡 键盘等等设备进行初步检测 检测成功之后&#xff0c;根据预设的启动柜顺序进行系统控制权的移交 一般情况下&#xf…

阿里云云安全中心详细介绍(原态势感知)功能价格说明

阿里云云安全中心&#xff08;原态势感知&#xff09;是一个实时识别、分析、预警安全威胁的服务器主机安全管理系统&#xff0c;云安全中心功能支持漏洞扫描与修复、基线检查、防勒索、防病毒、防篡改、威胁检测模型等功能&#xff0c;云安全中心基础版免费、防病毒班432元一年…

网络安全—小白学习笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟入…

水库大坝安全监测是什么和主要作用?

水库大坝安全监测是指通过仪器观测和巡视检查对水利水电工程主体结构、地基基础、两岸边坡、相关设施以及周围环境所作的测量及观察。大坝安全监测是作为水库大坝安全管理的重要组成部分&#xff0c;是掌握水库大坝安全性态的重要手段&#xff0c;是科学调度、安全运行的前提。…

Java进阶 之 再论面向对象(3)——构造方法Constructors 以及 调用的分析 JavaBean的概念 构造函数中this关键字

前言 在前面博客中&#xff0c;我们从面向过程和面向对象的编程思想谈起&#xff0c;阐述了类和对象在Java中的编程中的应用&#xff0c;此外&#xff0c;对于对象的内存&#xff0c;变量作用域&#xff0c;参数传递等进行了阐述。 Java进阶 之 再论面向对象&#xff08;1&am…

配电房监测系统:智能化电力管理的关键

随着社会的发展和科技的进步&#xff0c;电力设施的重要性日益凸显。其中&#xff0c;配电房作为电能分配的核心设施&#xff0c;其运行状态直接影响到电力系统的稳定性和可靠性。为了确保配电房的高效运行&#xff0c;采用配电房监测系统成为关键。此类系统利用先进的智能电力…

企业数字化转型的必选项:集成自动化

NO.1 将“不可能”变成“可能”的自动化工作流 在智能化时代&#xff0c;我们经常会听到“工作流”这个词&#xff0c;但很多人并不清晰它真正的含义&#xff0c;简单来说&#xff0c;它是一个与其他场景流程集成的应用程序&#xff0c;目标是自动化各应用之间的流程&#xf…

【ivX】低调且强大的低代码平台

目录 前言 一、低代码那么多 为什么选择iVX&#xff1f; 二、“拼”出来的低代码平台&#xff0c;真的好用吗&#xff1f; 前言 首先我们应该明白自动编程突破可能是&#xff1a;领域内Mini LLM 现在的思路都是搞LLM&#xff0c;几乎像“大跃进”一样全民都在修炼“大模型”…

来自小魔推的八大优势应用场景,这些你都了解吗?

进入2023年&#xff0c;大多数在做短视频宣传的实体商家都在考虑新的推广方式&#xff0c;而近期商家宣传工具已经逐渐被小魔推所种草&#xff0c;今天就把小魔推的应用场景与八大优势&#xff0c;统一给大家讲清楚&#xff01; 1&#xff1a;员工专属推广码&#xff0c;商家可…

基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(一)

原先不支持自定义业务表单的流程流转&#xff0c;因为这样对很多用户就更加方便&#xff0c;流程还是用现有的流程&#xff0c;但表单可以自己单独设计&#xff0c;满足各种不同的业务需求。 1、增加一个接口传入当前设计的流程应用类型 /*** 获取流程分类详细信息* param cod…

CustomTabBar 自定义选项卡视图

1. 用到的技术点 1) Generics 泛型 2) ViewBuilder 视图构造器 3) PreferenceKey 偏好设置 4) MatchedGeometryEffect 几何效果 2. 创建枚举选项卡项散列&#xff0c;TabBarItem.swift import Foundation import SwiftUI//struct TabBarItem: Hashable{ // let ico…

CV2对图像做渐变模糊

一段小代码&#xff0c;供参考&#xff0c;在CV2中做一些边缘渐变的功能。 主要流程&#xff1a; 生成一个随机的mask&#xff0c;并归一化&#xff0c;使其作为另一张图片的权重。对mask做高斯模糊&#xff0c;实现边缘渐变。将加权mask与原始图片相乘。 import os import cv…

HelloKitty 代码 Python

话不多说直接上代码,绘制速度慢,录屏之后调倍速 import math import turtle as t# 计算长度、角度 t1:画笔对象 r:半径 angle:扇形(圆形)的角度 def myarc(t1, r, angle):arc_length = 2 * math.pi * r * angle

树莓派安装.NET 6.0

首先安装.Net Core依赖&#xff08;未使用&#xff09; sudo apt install -y libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4 libcurl4-openssl-dev libssl-dev uuid-dev unzip libgdiplus libc6-dev libkrb5-3 需要安装的依赖微软官方文档已经列出…

想要精准获客? 必看企业软文的写作技巧

信息碎片化时代下&#xff0c;企业获客的常用方式就是软文营销&#xff0c;因为软文相比于一般的营销方式成本更低&#xff0c;效果持续时间长&#xff0c;但是有许多企业在写软文时没有掌握好方法&#xff0c;认为文章只要发了就行&#xff0c;导致宣传效果不明显&#xff0c;…