c++视觉处理---cv::Sobel()`算子

news2024/11/18 9:43:02

cv::Sobel()算子

cv::Sobel()是OpenCV库中的函数之一,用于计算图像的Sobel梯度。Sobel梯度是一种常用的图像处理技术,用于检测图像中的边缘和轮廓。

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

void cv::Sobel(
    cv::InputArray src,       // 输入图像
    cv::OutputArray dst,      // 输出的梯度图像
    int ddepth,               // 输出图像的深度(通常为-1,表示与输入图像相同)
    int dx, int dy,           // x和y方向的导数阶数(通常为1)
    int ksize = 3,            // Sobel核的大小
    double scale = 1,         // 缩放因子
    double delta = 0,         // 可选的增量
    int borderType = cv::BORDER_DEFAULT // 边界填充类型
);
  • src: 输入图像,通常是灰度图像。
  • dst: 输出的梯度图像,包含了计算的梯度信息。
  • ddepth: 输出图像的深度,通常设置为-1,表示输出图像与输入图像的深度相同。
  • dxdy: x和y方向的导数阶数,通常都设置为1,表示计算一阶导数。
  • ksize: Sobel核的大小,通常为3,表示使用3x3的Sobel核。
  • scale: 缩放因子,可以用于调整梯度值的幅度。
  • delta: 可选的增量,可以用于进一步微调梯度值。
  • borderType: 边界填充类型,通常使用默认值cv::BORDER_DEFAULT

cv::Sobel()函数根据指定的参数计算输入图像的梯度信息。你可以选择计算x方向、y方向或两者方向的梯度。梯度图像的像素值表示了在图像中的每个位置上的梯度强度。

使用cv::Sobel()函数,你可以实现各种基于梯度的图像处理任务,如边缘检测、轮廓提取等。参数的不同设置可以影响计算的梯度效果,可以根据具体需求进行调整。

cv::cartToPolar:将直角坐标系中的两个图像转换为极坐标系中的梯度幅值和方向

cv::cartToPolar是OpenCV中的一个函数,用于将直角坐标系中的两个图像转换为极坐标系中的梯度幅值和方向。通常,它用于处理Sobel、Scharr等梯度算子的输出结果,将水平和垂直梯度转换为梯度幅值和方向。

以下是cv::cartToPolar函数的一般用法和参数:

void cv::cartToPolar(
    cv::InputArray x,           // 输入的x坐标图像(水平梯度)
    cv::InputArray y,           // 输入的y坐标图像(垂直梯度)
    cv::OutputArray magnitude,  // 输出的梯度幅值图像
    cv::OutputArray angle,      // 输出的梯度方向图像
    bool angleInDegrees = false // 是否输出梯度方向的角度(默认为弧度)
);
  • xy: 输入的水平和垂直梯度图像,通常来自梯度算子(如Sobel)的输出。
  • magnitude: 输出的梯度幅值图像,表示每个位置的梯度强度。
  • angle: 输出的梯度方向图像,表示每个位置的梯度方向。
  • angleInDegrees: 一个布尔值,用于指定是否输出梯度方向的角度(如果设置为true,则以度为单位;如果设置为false,则以弧度为单位)。

cv::cartToPolar函数执行以下计算:

  • 对于每个输入位置 (x, y),计算 (magnitude, angle),其中 magnitude(x, y) 的模长(梯度幅值),angle(x, y) 的极坐标角度(梯度方向)。

使用cv::cartToPolar函数可以方便地将梯度信息从直角坐标系转换为极坐标系,以便进一步处理和分析图像的梯度。通常,这在边缘检测和特征提取等图像处理任务中非常有用。

案例

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

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

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

    // 创建输出的水平和垂直梯度图像
    cv::Mat gradientX, gradientY;

    // 计算水平梯度(x方向)
    cv::Sobel(inputImage, gradientX, CV_32F, 1, 0);

    // 计算垂直梯度(y方向)
    cv::Sobel(inputImage, gradientY, CV_32F, 0, 1);

    // 计算梯度幅值和方向
    cv::Mat gradientMagnitude, gradientDirection;
    cv::cartToPolar(gradientX, gradientY, gradientMagnitude, gradientDirection, true);

    // 显示原始图像和梯度图像
    cv::imshow("Original Image", inputImage);
    cv::imshow("计算水平梯度(x方向)", gradientX);
    cv::imshow("计算水平梯度(y方向)", gradientY);
    cv::imshow("计算梯度幅值梯度强度", gradientMagnitude);
    cv::imshow("计算梯度方向", gradientDirection);

    cv::waitKey(0);

    return 0;
}

在这里插入图片描述

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

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

相关文章

C++ 获取文件创建时间、修改时间、大小等属性

简介 获取文件创建时间、修改时间、大小等属性 代码 #include <iostream> #include <string.h> #include <time.h>void main() {std::string filename "E:\\LiHai123.txt";struct _stat stat_buffer;int result _stat(filename.c_str(), &s…

2023年中国叉车租赁行业现状分析:设备价格昂贵,租赁市场需求增长[图]

叉车租赁行业是指专门提供叉车租赁服务的行业。叉车是一种用于搬运、装卸和堆垛物品的机械设备&#xff0c;广泛应用于仓储、物流、建筑、制造业等领域。由于购买叉车需要较高的成本投入&#xff0c;而且使用频率可能不高&#xff0c;许多企业和个人选择通过租赁叉车来满足短期…

AI智剪助力,批量处理视频无忧,创作不再难

随着人工智能技术的迅速发展&#xff0c;一个名为“AI智剪”的新兴领域正引发全球范围内的关注。作为人工智能与视频剪辑技术的结合&#xff0c;AI智剪为影像产业带来了前所未有的变革&#xff0c;不仅极大地提高了剪辑效率&#xff0c;还为创作者提供了无限的可能性。今天我们…

基于SpringBoot的大型商场应急预案管理系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 预案信息管理 预案类型统计 事件类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍…

爱尔眼科角膜塑形镜验配超百万,全力做好“角塑镜把关人”

你知道吗?过去的2022年&#xff0c;我国儿童青少年总体近视率为53.6%&#xff0c;其中6岁儿童为14.5%&#xff0c;小学生为36%&#xff0c;初中生为71.6%&#xff0c;高中生为81%①。儿童青少年眼健康问题俨然成为全社会关心的热点与痛点&#xff0c;牵动着每一个人的神经。 好…

算法通过村第十三关-术数|青铜笔记|数字与数学

文章目录 前言数字统计专题符号统计阶乘0的个数 溢出问题整数反转字符串转整数回文数 进制专题七进制数进制转换 总结 前言 提示&#xff1a;生活是正着来生活&#xff0c;倒着去理解。 --戴维迈尔斯《社会心理学》 数学是学生时代掉头发的学科&#xff0c;那算法是毕业后掉头发…

【JavaEE】文件操作

文章目录 前言什么是文件树型结构组织和目录文件路径文件类型文件权限Java中的文件操作File 类的常见属性File 类常见构造方法File 类常用方法 前言 文件是我们日常生活中使用非常广泛的&#xff0c;我们使用任何一个程序都离不开文件操作&#xff0c;这个文件不仅仅指平时可以…

【java学习】变量的分类:成员变量与局部变量(16)

变量的分类 1. 基本概念2. 成员变量3. 局部变量4. 成员变量(属性)和局部变量的区别 1. 基本概念 概念&#xff1a; 在方法体外&#xff0c;类体内声明的变量称为成员变量。在方法体内部声明的变量称为局部变量。 2. 成员变量 实例变量&#xff1a;在类实例化成对象才能使用 …

多线程 - 线程池

线程池 相关的背景知识 线程池存在的意义: 使用进程来实现并发编程,效率太低了,任务太重了,为了提高效率,此时就引入了线程,线程也叫做“轻量级进程”,创建线程比创建进程更高效;销毁线程比销毁进程更高效;调度线程比调度进程更高效…此时,使用多线程就可以在很多时候代替进程…

在美国如何申请批准销售儿童玩具?提交哪些相关文件?需要的认证是?

在美国如何申请批准销售儿童玩具&#xff1f;提交哪些相关文件&#xff1f;需要的认证是&#xff1f;ASTM F963-17 ​在美国销售玩具 重要&#xff1a; 如果您要在亚马逊商城销售商品&#xff0c;则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策。…

dockerfile lnmp 搭建wordpress、docker-compose搭建wordpress

-----------------安装 Docker--------------------------- 目前 Docker 只能支持 64 位系统。systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 --------------------------------------------------…

什么是信创测试?信创测试工具有哪些?

信创全称是“信息技术应用创新”&#xff0c;旨在实现信息技术自主可控&#xff0c;规避外部技术制裁和风险&#xff0c;其涉及产业链包括硬件、基础软件、应用软件、云服务、数据安全等领域。 信创测试是指对信创工程项目中的产品、系统等进行测试和验证&#xff0c;以确保其…

【B/S架构】医院不良事件报告系统源码

医院不良事件报告系统为医院内质量控制、患者安全关注、医疗安全不良事件方面的精细化的管理提供了平台&#xff0c;是等级医院评审的必备内容&#xff0c;评审要求医院直报系统要与卫生部“医疗安全(不良)事件报告系统”建立网络对接。 不良事件报告系统源码包括护理相关事件、…

写一个名为Rectangle的类表示矩形

如何使用Rectangle类计算矩形的面积 要求&#xff1a;其属性包括宽width、高height和颜色color&#xff0c;访问权限分别为private&#xff0c;width和height都是double型的&#xff0c;而color则是String类型的。要求该类提供计算面积的方法getArea()方法&#xff0c;以及修改…

Node.js 做 Web 后端的优势在哪?为什么是明智的选择?

当我们谈论构建强大的Web应用程序时&#xff0c;选择适当的后端技术至关重要。在如今的技术领域中&#xff0c;Node.js已经崭露头角&#xff0c;并且越来越多的开发者和企业选择将其作为首选的后端开发工具。但是&#xff0c;Node.js究竟有哪些优势&#xff0c;使得它成为众多开…

WMS仓储管理系统的盘点功能解析

随着电商行业的快速发展&#xff0c;仓储管理在企业的运营中扮演着越来越重要的角色。为了提高仓库的运营效率和管理水平&#xff0c;许多企业引入了WMS仓储管理系统。本文将对WMS仓储管理系统的盘点功能进行解析&#xff0c;探讨其在实际应用中的价值。 一、WMS仓储管理系统概…

【分享】影刀使用xpath捕获指定的元素

xpath捕获元素比较精准&#xff0c;前面也介绍了xpath的用法 现在捕获社区里帖子详情页的标题 //*[class‘discuss_detail_header___3LhnQ’]/h1 找到class是discuss_detail_header___3LhnQ的子元素h1 获取文章内容 //*[id‘w-e-textarea-1’] 找到id是w-e-textarea-1的元…

这短短 6 行代码你能数出几个bug?

前言&#xff1a;本文仅仅只是分享笔者一年前见到的诡异代码&#xff0c;大家可以看看乐子&#xff0c;随便数一数一共有多少个bug&#xff0c;这数bug多少还是要点水平的 在初学编程的时候&#xff0c;写的第一个代码大多都是 hello world&#xff0c;可是就算是 hello world…

如何使用CSS和JavaScript实施暗模式?

近年来&#xff0c;暗模式作为用户界面选项备受追捧。它提供了更暗的背景和更亮的文本&#xff0c;不仅可以减轻眼睛疲劳&#xff0c;还可以节省电池续航时间&#xff0c;尤其是在OLED屏幕上。 不妨了解如何结合使用CSS和JavaScript为网站和Web应用程序添加暗模式选项。 了解暗…

因果图测试用例设计方法介绍(超全的总结笔记错过就没有了)

前言 为什么需要测试用例 测试的目的是在有限的资源下&#xff0c;尽可能多的找出系统的缺陷。这就要求在测试中&#xff0c;尽可能完全的走完系统的所有流程&#xff0c;保证所有的分支都经过测试。 而测试过程是由人来执行的&#xff0c;不可能避免的会遗漏一些应该测试内容…