首页 > 其他分享 >OpenCV(cv::divide())

OpenCV(cv::divide())

时间:2024-09-20 10:36:51浏览次数:9  
标签:divide 矩阵 src2 OpenCV src1 标量 除法 cv

目录



cv::divide() 是 OpenCV 中用于执行数组或标量的逐元素除法操作的函数。它允许对矩阵进行元素级的除法操作,支持两种使用方式:矩阵与矩阵之间的除法,或矩阵与标量之间的除法。



1. 函数定义

void cv::divide(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1);

参数:

  1. src1 (InputArray):

    • 第一个输入矩阵(分子)。可以是多维数组,支持 1 通道、3 通道、或 4 通道的矩阵。
  2. src2 (InputArray):

    • 第二个输入矩阵(分母)。可以是一个与 src1 相同大小和类型的矩阵,也可以是一个标量(即标量除法)。src2 中的元素不能为零,否则会产生除零错误。
  3. dst (OutputArray):

    • 输出矩阵,存储结果。其大小与类型取决于 src1src2,除非指定了 dtypedst 的元素为 src1src2 对应元素除法的结果。
  4. scale (double):

    • 可选的缩放因子。除法后结果会乘以这个缩放因子,默认值为 1。
  5. dtype (int):

    • 可选的输出矩阵类型。如果不指定(即默认值 -1),则输出矩阵的类型与 src1 相同。dtype 可用于显式指定输出矩阵的数据类型。
    • 在 OpenCV 中,数据类型通过枚举值表示,常见的类型和对应的值如下:
      • CV_8U = 0 (8位无符号整数)
      • CV_8S = 1 (8位有符号整数)
      • CV_16U = 2 (16位无符号整数)
      • CV_16S = 3 (16位有符号整数)
      • CV_32S = 4 (32位有符号整数)
      • CV_32F = 5 (32位浮点数)
      • CV_64F = 6 (64位浮点数)

返回值:

  • 没有返回值,但会将计算结果存储在 dst 中。


2. 工作原理

cv::divide() 计算的公式是:

\[dst(I) = \frac{src1(I)}{src2(I)} \times scale \]

这里 \(I\) 表示矩阵中的每个元素。

如果 \(src2\) 是一个标量(而不是矩阵),则 \(src1\) 中的每个元素都会被该标量除,以实现矩阵与标量之间的逐元素除法。



3. 示例

3.1 矩阵除法

cv::Mat A = (cv::Mat_<float>(2,2) << 4, 8, 12, 16);
cv::Mat B = (cv::Mat_<float>(2,2) << 2, 2, 6, 4);
cv::Mat result;
cv::divide(A, B, result);

在这个例子中,AB 是两个 2x2 的浮点矩阵,divide() 会逐元素进行除法运算,并将结果存储在 result 矩阵中:

\[result = \left( \begin{matrix} 2 & 4 \\ 2 & 4 \end{matrix} \right) \]


3.2 矩阵和标量的除法

cv::Mat A = (cv::Mat_<float>(2,2) << 10, 20, 30, 40);
cv::Mat result;
cv::divide(A, 10, result);

在此例中,A 中的每个元素都会被标量 10 除,结果是:

\[result = \left( \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right) \]


3.3 使用缩放因子

cv::Mat A = (cv::Mat_<float>(2,2) << 4, 8, 12, 16);
cv::Mat B = (cv::Mat_<float>(2,2) << 2, 2, 6, 4);
cv::Mat result;
cv::divide(A, B, result, 0.5);  // 缩放因子为 0.5

除法结果在乘以缩放因子 0.5 后:

\[result = \left( \begin{matrix} 1 & 2 \\ 1 & 2 \end{matrix} \right) \]



4. 注意事项

  • src2 是矩阵时,其元素不能为零,否则会导致除零错误。
  • 如果需要防止除零错误,可以使用 cv::threshold() 或其他手段过滤 src2 中为零的值。


5. 应用场景

cv::divide() 常用于图像处理中的图像归一化、亮度调整、对比度调节等场景。例如:

  • 对图像进行逐像素归一化。
  • 将图像中的每个像素值除以某个常量以减少亮度。

该函数是 OpenCV 提供的用于处理矩阵运算的常用工具之一,非常适合需要进行逐元素操作的任务。



标签:divide,矩阵,src2,OpenCV,src1,标量,除法,cv
From: https://www.cnblogs.com/keye/p/18421973

相关文章

  • 设计原理图:417-基于XCVU9P+ C6678的8T8R的无线MIMO平台
    基于XCVU9P+C6678的8T8R的无线MIMO平台  一、板卡概述     北京太速科技板卡基于TI TMS320C6678DSP和XCVU9P高性能FPGA,FPGA接入4片AD9361无线射频,构建8输入8输出的无线MIMO平台,丰富的FPGA资源和8核DSP为算法验证和信号处理提供强大能力。  ......
  • 变脸大师:基于OpenCV与Dlib的人脸换脸技术实现
    目录简介 重新简介思路解析1.加载人脸检测器和特征点预测模型2.读取两张人脸图片3.获取人脸的特征点4.使用Delaunay三角剖分5.仿射变换三角形6.三角形变形并复制7.脸部轮廓掩模8.无缝克隆换脸9.缩放图像10.显示换脸结果整体代码效果展示准备换脸的......
  • Shiro-550—漏洞分析(CVE-2016-4437)
    目录漏洞原理源码分析加密过程解密过程漏洞复现漏洞原理Shiro-550(CVE-2016-4437)反序列化漏洞在调试cookie加密过程的时候发现开发者将AES-CBC用来加密的密钥硬编码了,并且所以导致我们拿到密钥后可以精心构造恶意payload替换cookie,然后让后台最后解密的时候进行反序列化我们的......
  • CVPR(Conference On Computer Vision and Pattern Recognition)近十年研究热点追踪
    CVPR(ConferenceOnComputerVisionandPatternRecognition)近十年研究热点追踪CVPR近十年(2015~2024)研究热点追踪......
  • OpenCv(一)
    计算机视觉和机器视觉的区别计算机视觉(ComputerVision)和机器视觉(MachineVision)是两个密切相关但又有区别的领域。两者在应用、技术和目标上都有所不同。**计算机视觉:**主要是研究如何使计算机能够理解和处理图像和视频数据。其目标是从视觉数据中提取有用的信息,实现图像......
  • OpenCV(cv::Sobel())
    目录1.函数定义2.工作原理2.1Sobel核2.2计算过程(1)x方向的Sobel卷积计算(2)y方向的Sobel卷积计算(3)合并x和y方向的梯度2.3示例3.示例4.使用场景总结cv::Sobel()是OpenCV中用于计算图像的梯度(边缘)的常用函数之一。它实现了Sobel滤波器,这是一种常见......
  • OpenCV(cv::magnitude())
    目录1.函数定义2.使用场景3.示例4.注意事项cv::magnitude()是OpenCV中用于计算向量的大小(模)的函数。它可以处理二维向量的模,也可以用于计算图像中每个像素点的梯度大小,通常在处理图像梯度或傅里叶变换时使用。1.函数定义voidcv::magnitude(InputArrayx,......
  • 什么是轻量应用服务器?与云服务器CVM对比有哪些区别?
    对比云服务器CVM,轻量应用服务器TencentCloudLighthouse更聚焦于中小企业、开发者、云计算入门者、学生等用户群体。相比云服务器CVM更加简单易用,精简了云服务器CVM的高阶概念及功能,提供高带宽流量包并以高性价比的套餐形式整体售卖基础云资源,将热门开源软件融合打包实现一......
  • 9月京东云云服务器CVM价格配置表汇总-金秋上云!
    轻量云主机是面向中小企业、开发者打造的预装精选软件、开箱即用的主机产品,快速搭建网站、电商、企业低代码工具箱,云盘、共享文档、知识库、开发测试环境等,相对普通云主机,按套餐购买更优惠、控制台可视化管理,运维更简单,提供更便捷上云体验。轻量云主机这个专区是本次活动的主要专区......
  • 护目镜佩戴检测系统 Opencv
    护目镜佩戴检测系统利用摄像头和图像识别技术,护目镜佩戴检测系统实时监测工人的护目镜佩戴情况,护目镜佩戴检测系统通过拍摄工人的面部图像,并使用算法分析图像中的眼睛和护目镜位置,判断是否正确佩戴护目镜。护目镜佩戴检测系统能够实时监测工人的护目镜佩戴情况,护目镜佩戴检测系统及......