[C++] opencv - Mat::convertTo函数介绍和使用场景

Mat::convertTo()函数

Converts an array to another data type with optional scaling.   

该函数主要用于数据类型的相互转换。

The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overflows:

m(x,y)=saturate_cast<rtype>(α(∗this)(x,y)+β)   

这是函数底层算法实现公式,了解算法方便我们熟练运用该函数。

函数原型:

void cv::Mat::convertTo(OutputArray m, int rtype) const;

void cv::Mat::convertTo(OutputArray m, int rtype, double alpha=1, double beta=0) const;

参数说明:
m:目标矩阵。如果m在运算前没有合适的尺寸或类型,将被重新分配。

rtype: 标矩阵的类型。因为目标矩阵的通道数与源矩阵一样,所以rtype也可以看做是目标矩阵的位深度。如果rtype为负值,目标矩阵和源矩阵将使用同样的类型。

alpha: 尺度变换因子(可选)。默认值是1。即把原矩阵中的每一个元素都乘以alpha。

beta: 附加到尺度变换后的值上的偏移量(可选)。默认值是0。即把原矩阵中的每一个元素都乘以alpha,再加上beta。

函数使用案例

降低图像的亮度

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

using namespace cv;
using namespace std;

int main()
{
    // 读取一张灰色图片
    Mat img = imread("D:/LocalTest/images/beauty_01.jpg", IMREAD_GRAYSCALE);
    imshow("原始灰度图片", img);
    
    // 降低图像的亮度
    Mat target_img;
    img.convertTo(target_img, -1, 1.0, -50);
    
    // 打印第一行第一个像素的原始值
    int img_value = img.at<uchar>(0, 0);
    int target_img_value = target_img.at<uchar>(0, 0);
    cout << "The original value of the first pixel is: " << img_value << endl;
    cout << "The target img value of the first pixel is: " << target_img_value << endl;

    imshow("减少图像亮度", target_img);

    // 等待用户按下任意键退出程序
    waitKey(0);

    return 0;
}

输出结果:

The original value of the first pixel is: 243

The target img value of the first pixel is: 193

对图像进行归一化处理

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

using namespace cv;
using namespace std;

int main()
{
    // 读取一张灰色图片
    Mat img = imread("D:/LocalTest/images/beauty_01.jpg", IMREAD_GRAYSCALE);
    imshow("原始灰度图片", img);
    
    // 将灰色图片转换为进行归一化
    Mat norm_img;
    img.convertTo(norm_img, CV_32FC1, 1.0/255.0);
    
    // 打印第一行第一个像素的原始值
    int img_value = img.at<uchar>(0, 0);
    float norm_img_value = norm_img.at<float>(0, 0);
    cout << "The original value of the first pixel is: " << img_value << endl;
    cout << "The norm value of the first pixel is: " << norm_img_value << endl;

    imshow("归一化图片", norm_img);

    // 等待用户按下任意键退出程序
    waitKey(0);

    return 0;
}

输出结果:

The original value of the first pixel is: 243

The norm value of the first pixel is: 0.952941

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks

目录 0、基本信息1、研究动机2、创新点——One For All &#xff1a;unique features3、准备4、具体实现4.1、用TAGs统一来自不同领域的图数据4.2、用NOI&#xff08;NODES-OF-INTEREST&#xff09;统一不同图任务4.2.1、NOI子图4.2.2、NOI提示结点 4.3、用于图的上下文学习&am…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (12) | 目标检测

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

2024华数杯国际赛AB题五小问完整思路+数据+四小问代码+后续高质量成品论文+运行结果高清图+参考文献

问题A&#xff1a;日本放射性废水 &#xff08;AB题的完整资料放在文末了&#xff09; 对于这次的华数杯A题&#xff0c;在我五月份完成的数维杯A题目中&#xff1a; 就已经完成过地下水污染物的公式推导&#xff1a; 因此&#xff0c;展示部分示例代码吧&#xff0c;我会在修…

Echarts柱状图 - 柱形颜色渐变

<!-- 违法 --> <template><div class"section"><div class"grid_body_top"><div v-for"(item, index) in topList" v-show"item.isShow" :key"index"><i :class"[icon, ...item.icon…

电子学会C/C++编程等级考试2023年12月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:书架(2023.12) John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 …

Elasticsearch各种文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档 初始化文档数据 在进行各种文档操作之前&#xff0c;我们先进行初始化文档数据的工作 查询所有文档 在 …

【React】Redux的使用详解

文章目录 Redux的三大原则Redux官方图react-redux使用 1、创建store管理全局状态​ 2、在项目index.js根节点引用 3、 在需要使用redux的页面或者组件中&#xff0c;通过connect高阶组件映射到该组件的props中 redux中异步操作如何使用redux-thunkcombineReducers函数 Re…

Pixels:重新定义游戏体验的区块链农场游戏

数据源&#xff1a;Pixels Dashboard 作者&#xff1a;lesleyfootprint.network 最近&#xff0c;Pixels 通过从 Polygon 转移到 Sky Mavis 旗下的 Ronin 网络&#xff0c;完成了一次战略性的转变。 Pixels 每日交易量 Pixels 在 Ronin 网络上的受欢迎程度急剧上升&#xf…

关于VScode的这个ssh的配置的经验

1.首先&#xff0c;我是因为重装了ubantu系统&#xff0c;不得不重新配置ssh 2.第一步&#xff0c;在本机的终端安装ssh插件&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;restart开启这个ssh端口 3.然后&#xff0c;就在vscode里面&#xff0c;安装哪个…

【办公自动化】利用Python代码暴力破解RAR压缩包的密码

title: 利用Python代码暴力破解RAR压缩包的密码 tags: bigleft excerpt: 利用Python代码暴力破解RAR压缩包的密码 利用Python代码暴力破解RAR压缩包的密码 引言 有时从网盘或p2p下载了几个G的资源&#xff0c;下载了几天&#xff0c;终于下载完成&#xff0c;结果发现来需要密…

QT上位机开发(MySql访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 网上介绍的关于QT和mysql部分的内容&#xff0c;都是利用Qt自带的mysql库来实现数据读写的。但是事实上来说&#xff0c;即使不用qt带的库&#xf…

12.30平衡二叉树、生成树最短路、链表、排序、二叉树——数算选择题专练

1 平衡二叉树 节点数目一定时&#xff0c;平衡因子为1时&#xff0c;树最高。 平衡二叉树&#xff0c;左右子树都是平衡的&#xff0c;最少要满足一个式子&#xff0c;即维护左右都是AVL,最多就是满二叉树&#xff0c;节点总数为2^(h-1)&#xff1b;最少的时候&#xff0c;每…

2.mac 安装 Visual studio code 整合go开发

目录 概述前置下载关键命令整合C#go配置go插件常见的go工具安装测试 结束 概述 mac 安装 Visual studio code 整合go开发 相关前置文章 go安装及相关配置 文章 前置 官网速递 mac 系统高于等于 10.15.x 可以直接最新版本 我的系统是 10.13 &#xff0c;所以只能安装此版本…

Linux系统三剑客之awk命令详解(三)

Linux系统三剑客之grep和正则表达式的介绍(一)-CSDN博客 Linux系统三剑客之sed命令详解(二)-CSDN博客 接上文 目录 1.作用 2.语法 3.变量 4.选项 5.模式 ​编辑 6.动作 7.实例 1.作用 awk是一个强大的文本分析工具&#xff0c;其主要工作原理就是将文件内容逐行读取…

手拉手Vue组件由浅入深

组件 (Component) 是 Vue.js 最强大的功能之一&#xff0c;它是html、css、js等的一个聚合体&#xff0c;封装性和隔离性非常强。 组件化开发&#xff1a; 1、将一个具备完整功能的项目的一部分分割多处使用 2、加快项目的进度 3、可以进行项目的复用 组件注册分…

IaC基础设施即代码:Terraform 连接 aws S3 实现多资源管理

目录 一、实验 1.环境 2.aws 亚马逊云创建用户 3.Windows使用Terraform 初始化 aws provider 4.Windows使用Terraform 创建S3存储资源 &#xff08;对象存储&#xff09; 5.Windows使用Terraform 创建Dynamo DB资源 &#xff08;表格存储&#xff09; 6.Windows给Terrafo…

Skywalking链路追踪

目录 一、简介1.1、APM系统1.2、SkyWalking 简介 二、快速入门2.1、下载、启动2.2、界面认识 三、持久化存储四、告警通知五、自定义追踪-细粒度追踪service方法 一、简介 1.1、APM系统 APM&#xff08;Application Performance Monitoring&#xff09;系统是一种用于监控和管…

《Redis:NoSQL演进之路与Redis深度实践解析》

文章目录 关于NoSQL为什么引入NoSQL1、单机MySQL单机年代的数据库瓶颈 2、Memcached&#xff08;缓存&#xff09; MySQL 垂直拆分 &#xff08;读写分离&#xff09;3、分库分表水平拆分MySQL集群4、如今的网络架构5、总结 NoSQL的定义NoSQL的分类 Redis入门Redis能干嘛&…

AI教我学编程之C#类的基本概念(1)

前言 在AI教我学编程之C#类型 中&#xff0c;我们学习了C#类型的的基础知识&#xff0c;而类正是类型的一种. 目录 区分类和类型 什么是类&#xff1f; 对话AI 追问 实操 追踪属性的使用 AI登场 逐步推进 提出疑问 药不能停 终于实现 探索事件的使用 异步/交互操作 耗时操…

IO网络4.0

思维导图 tftp上传 #include <myhead.h>#define ERR_LOG(msg) do{\perror(msg);\printf("%d %s %s\n", __LINE__, __func__, __FILE__);\ }while(0)#define PORT 69 #define N 516int do_upload(int sfd, struct sockaddr_in sin);int main(int a…