- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
描述
标量除以矩阵。
函数 divRC 将给定的标量除以矩阵 src 的每个元素,并将结果保存在与 src 具有相同大小和类型的新的矩阵中:
dst(I) = saturate(divident*scale/src(I)) \texttt{dst(I) = saturate(divident*scale/src(I))} dst(I) = saturate(divident*scale/src(I))
当 src(I) 为零时,dst(I) 也将为零。多通道矩阵的不同通道独立处理。矩阵可以是单通道或多通道。输出矩阵必须与 src 具有相同的大小和深度。
支持的矩阵数据类型为 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1。
cv::gapi::divRC 函数用于执行标量除以矩阵的逐元素操作,并可以选择性地应用缩放因子和指定输出数据类型深度。与 cv::gapi::divC 不同,divRC 是将一个标量(被除数)除以矩阵中的每个元素(除数),而不是相反。
函数原型
cpp
GMat cv::gapi::divRC
(
const GScalar & divident,
const GMat & src,
double scale,
int ddepth = -1
)
参数
- 参数src:输入矩阵。
- 参数divident:要被除的数(被除数)。
- 参数ddepth:输出矩阵的可选深度。如果为 -1,则输出矩阵的深度将与输入矩阵的深度相同。
- 参数scale:缩放因子。
返回值
返回一个 GMat 对象,表示标量除以矩阵中每个元素并经过缩放后的结果。
代码示例
cpp
#include <iostream>
#include <opencv2/gapi/core.hpp> // 包含G-API核心功能
#include <opencv2/opencv.hpp>
int main()
{
// 创建示例数据
cv::Mat src = ( cv::Mat_< float >( 2, 2 ) << 2.0f, 4.0f, 8.0f, 16.0f );
cv::Scalar divident( 16.0 ); // 标量被除数
double scale = 1.0; // 缩放因子
// 检查输入矩阵是否为空
if ( src.empty() )
{
std::cerr << "无法加载输入矩阵,请检查数据。" << std::endl;
return -1;
}
// 定义G-API图中的输入
cv::GScalar gdivident( divident );
cv::GMat gsrc;
int ddepth = -1; // 使用默认深度
// 执行除法操作
auto gdst = cv::gapi::divRC( gdivident, gsrc, scale, ddepth );
// 创建一个计算图
cv::GComputation div_graph( cv::GIn( gsrc ), cv::GOut( gdst ) );
// 输出矩阵
cv::Mat result;
// 编译并执行计算图
div_graph.apply( cv::gin( src ), cv::gout( result ) );
// 打印结果
std::cout << "Result: \n" << result << std::endl;
return 0;
}
运行结果
bash
Result:
[8, 4;
2, 1]