- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
描述
计算两个矩阵的每个元素的缩放乘积。
mul函数计算两个矩阵的逐元素乘积:
dst ( I ) = saturate ( scale ⋅ src1 ( I ) ⋅ src2 ( I ) ) \texttt{dst} (I)= \texttt{saturate} ( \texttt{scale} \cdot \texttt{src1} (I) \cdot \texttt{src2} (I)) dst(I)=saturate(scale⋅src1(I)⋅src2(I))
如果 src1.depth() == src2.depth(),ddepth 可以设置为默认值 -1。在这种情况下,输出矩阵将具有与输入矩阵相同的深度。矩阵可以是单通道或多通道。输出矩阵必须与输入矩阵具有相同的大小。
支持的矩阵数据类型包括:CV_8UC1、CV_8UC3、CV_16UC1、CV_16SC1、CV_32FC1。
注意:
该函数的文本ID是 “org.opencv.core.math.mul”。
函数原型
GMat cv::gapi::mul
(
const GMat & src1,
const GMat & src2,
double scale = 1.0,
int ddepth = -1
)
参数
- 参数src1:第一个输入矩阵。
- 参数src2:与 src1 大小和深度相同的第二个输入矩阵。
- 参数scale:可选的比例因子。
- 参数ddepth:输出矩阵的可选深度。
代码示例
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi/imgproc.hpp>
#include <opencv2/opencv.hpp>
int main()
{
// 创建G-API网络编译器
cv::GComputation comp( []() {
// 定义输入
cv::GMat src1, src2;
// 计算src1和src2的逐元素乘积,并应用比例因子
cv::GMat dst = cv::gapi::mul( src1, src2, 1.5, -1 ); // 使用1.5作为scale因子,深度与输入相同
// 返回计算图
return cv::GComputation( cv::GIn( src1, src2 ), cv::GOut( dst ) );
} );
// 创建一些示例数据
cv::Mat mat1 = ( cv::Mat_< uchar >( 2, 2 ) << 1, 2, 3, 4 );
cv::Mat mat2 = ( cv::Mat_< uchar >( 2, 2 ) << 5, 6, 7, 8 );
// 输出矩阵
cv::Mat result;
// 在CPU上运行计算图
comp.apply( cv::gin( mat1, mat2 ), cv::gout( result ) );
// 打印结果
std::cout << "Result: \n" << result << std::endl;
return 0;
}
运行结果
Result:
[ 8, 18;
32, 48]