- 操作系統: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]