OpenCV 图形API(8)用于执行两个矩阵(或图像)之间的逐元素除法操作函数div()

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

描述

执行两个矩阵的逐元素除法。

函数 div 将一个矩阵除以另一个矩阵:
dst(I) = saturate(src1(I)*scale/src2(I)) \texttt{dst(I) = saturate(src1(I)*scale/src2(I))} dst(I) = saturate(src1(I)*scale/src2(I))

当 src2(I) 的值为零时,结果 dst(I) 也会被设为零。如果 src2(I) 的值为零且数据类型是浮点型,则返回的结果将是正无穷大(Inf)或非数值(NaN),这取决于 IEEE 标准。

对于多通道矩阵,不同通道的数据会被独立处理。输入矩阵可以是单通道或多通道。输出矩阵必须与输入矩阵具有相同的尺寸和深度。

支持的矩阵数据类型为 CV_8UC1, CV_8UC3, CV_16UC1, CV_16SC1, CV_32FC1。

注意

函数文本ID是 "org.opencv.core.math.div"

函数原型

cpp 复制代码
GMat cv::gapi::div
(
 	const GMat &  	src1,
	const GMat &  	src2,
	double  	scale,
	int  	ddepth = -1 
) 		

参数

  • 参数src1:第一个输入矩阵。
  • 参数src2:与 src1 具有相同大小和深度的第二个输入矩阵。
  • 参数scale:标量因子。
  • 参数ddepth:输出矩阵的可选深度;仅当 src1.depth() == src2.depth() 时,你可以传递 -1。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/gapi/core.hpp>  // 包含G-API核心功能
#include <opencv2/opencv.hpp>

int main()
{
    // 创建示例数据
    cv::Mat src1 = ( cv::Mat_< float >( 2, 2 ) << 1.0f, 2.0f, 3.0f, 4.0f );
    cv::Mat src2 = ( cv::Mat_< float >( 2, 2 ) << 2.0f, 1.0f, 0.5f, 0.0f );  // 注意这里包含了一个0值

    // 检查输入矩阵是否为空
    if ( src1.empty() || src2.empty() )
    {
        std::cerr << "无法加载输入矩阵,请检查数据。" << std::endl;
        return -1;
    }

    // 定义G-API图中的输入
    cv::GMat gsrc1, gsrc2;
    double scale = 1.0;  // 缩放因子
    int ddepth   = -1;   // 使用默认深度

    // 执行除法操作
    auto gdst = cv::gapi::div( gsrc1, gsrc2, scale, ddepth );

    // 创建一个计算图
    cv::GComputation div_graph( cv::GIn( gsrc1, gsrc2 ), cv::GOut( gdst ) );

    // 输出矩阵
    cv::Mat result;

    // 编译并执行计算图
    div_graph.apply( cv::gin( src1, src2 ), cv::gout( result ), cv::compile_args() );

    // 打印结果
    std::cout << "Result: \n" << result << std::endl;

    return 0;
}

运行结果

bash 复制代码
Result: 
[0.5, 2;
 6, inf]
相关推荐
程序员正茂17 分钟前
Android studio中初步使用OpenCV库
android·opencv
小保CPP10 小时前
OpenCV C++将多张图像合并为webp动图
c++·人工智能·opencv·计算机视觉
小保CPP12 小时前
OpenCV C++提取webp动图里的图片
c++·人工智能·opencv·计算机视觉
深度研习笔记1 天前
OpenCV工业视觉实战11|多线程解耦+视频流稳流+推理加速,彻底解决卡顿阻塞,实现毫秒级工业实时检测
人工智能·opencv·计算机视觉
深度研习笔记1 天前
OpenCV工业视觉进阶14|SQLite违规数据库存储+历史记录查询+Excel报表导出,完成项目商用数据闭环(验收必备)
数据库·opencv·sqlite
C++ 老炮儿的技术栈2 天前
OpenCV 实现社保卡透视矫正:Hough 直线提取四角并转正证件图像
c语言·c++·人工智能·opencv·算法·计算机视觉·c
深度研习笔记2 天前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付
python·opencv·webpack
深度研习笔记2 天前
OpenCV工业视觉实战06|ROI区域截取+局部精细化检测,锁定作业区域、屏蔽无效背景,大幅提升YOLO检测准确率
人工智能·opencv·yolo
fai厅的秃头姐!2 天前
OpenCV-基础篇
人工智能·opencv·计算机视觉
丨白色风车丨2 天前
OpenCV 基于 HSV 颜色空间实时颜色分割(摄像头蓝色识别)
人工智能·opencv·计算机视觉·hsv颜色识别·python计算机视觉