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

OpenCV 图形API(69)图像与通道拼接函数------将一个 GMat 类型的对象转换为另一个具有不同深度GMat对象函数convertTo()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将一个矩阵转换为另一种数据深度,并可选择进行缩放。
该方法将源像素值转换为目标数据深度。最终应用 saturate_cast<> 以避免可能出现的数据溢出情况:
m ( x , y ) = s a t u r a t e _ c a s t < r T y p e > ( α ( ∗ t h i s ) ( x , y ) + β ) m(x,y) = saturate \_ cast<rType>( \alpha (*this)(x,y) + \beta ) m(x,y)=saturate_cast<rType>(α(this)(x,y)+β)
输出矩阵必须与输入矩阵大小相同。

注意
此函数的文本标识符是 “org.opencv.core.transform.convertTo”。

函数原型

GMat cv::gapi::convertTo 	
(const GMat &  	src,int  	rdepth,double  	alpha = 1,double  	beta = 0 
) 	

参数

  • 参数 src: 需要被转换的输入矩阵。
  • 参数 rdepth: 目标输出矩阵的数据深度,更确切地说是深度(因为通道数量与输入相同);如果 rdepth 是负数,则输出矩阵将具有与输入相同的深度。
  • 参数 alpha: 可选的比例因子。
  • 参数 beta: 添加到缩放值的可选增量。

代码示例

#include <iomanip>  // For std::setprecision
#include <iostream>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/opencv.hpp>int main()
{// 创建一个 G-API 图像处理图cv::GMat in;// 定义转换操作:例如从 CV_8U 转换到 CV_32F,并应用 alpha 和 betaint rdepth   = CV_32F;  // 目标深度,这里是32位浮点数double alpha = 1.0;     // 缩放因子double beta  = 0.0;     // 增量值// 使用 convertTo 方法cv::GMat dst = cv::gapi::convertTo( in, rdepth, alpha, beta );// 定义 G-API 图(graph)和编译它cv::GComputation graph( cv::GIn( in ), cv::GOut( dst ) );// 准备输入数据:这里以随机生成的数据为例cv::Mat src_mat = ( cv::Mat_< uchar >( 3, 3 ) << 1, 2, 3, 4, 5, 6, 7, 8, 9 );  // 示例8位无符号整数矩阵cv::Mat dst_mat;// 在输入数据上运行 G-API 图像处理图graph.apply( src_mat, dst_mat, cv::compile_args( cv::gapi::kernels() ) );// 输出结果std::cout << "Original matrix (type CV_8U):\n" << src_mat << std::endl;std::cout << "Converted matrix (type CV_32F):\n";std::cout << std::fixed << std::setprecision( 1 );  // 设置浮点数输出格式for ( int i = 0; i < dst_mat.rows; ++i ){for ( int j = 0; j < dst_mat.cols; ++j ){std::cout << dst_mat.at< float >( i, j ) << " ";}std::cout << "\n";}return 0;
}

运行结果

Original matrix (type CV_8U):
[  1,   2,   3;4,   5,   6;7,   8,   9]
Converted matrix (type CV_32F):
1.0 2.0 3.0 
4.0 5.0 6.0 
7.0 8.0 9.0 
http://www.xdnf.cn/news/2823.html

相关文章:

  • vue3使其另一台服务器上的x.html,实现x.html调用中的函数,并向其传递数据。
  • kylin v10 + argo + ascend 310p多机多卡 pytorch distributed 训练
  • JavaWeb学习打卡-Day4-会话技术、JWT、Filter、Interceptor
  • WPF之Label控件详解
  • GoLand包的爆红问题解决
  • Coupang火箭计划深度攻略:eBay卖家突破韩国市场的三维数据作战模型
  • 面试算法高频08-动态规划-03
  • InitializingBean接口和@PostConstruct-笔记
  • Spring系列四:AOP切面编程 第二部分
  • EasyGBS国标GB28181设备管理软件打造园区安防高效解决方案
  • 【C++】类和对象(4)
  • 开源CMS系统的SEO优化功能主要依赖哪些插件?
  • java 和 C#操作数据库对比
  • Web技术与Apache网站部署
  • 知识付费平台:野兔YeTu
  • 静态库与动态库简介
  • CAD2008无法完成激活注册问题
  • LINE FRIENDS 正式与 Walrus 合作,全新 AI 驱动的游戏即将上线
  • maven私服配置
  • 如何创建并使用极狐GitLab 受保护分支?
  • 明远智睿SSD2351开发板:开启工业控制新征程
  • Linux[开发工具]
  • 短视频矩阵系统贴牌批量剪辑功能开发,支持OEM
  • 马井堂-大语言模型对教学的应用分析
  • C++面试常青客:LRUCache最近最少使用算法
  • 【超详细讲解】什么是序列化和反序列化?
  • Elastic Platform 8.18 和 9.0:ES|QL Lookup Joins 功能现已推出,Lucene 10!
  • STM32 USB配置详解
  • 使用多线程快速向Excel中快速插入一万条数据案例
  • UDP协议详解+代码演示