首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

对OpenCV中3种乘法操作的理解掌握

  • 23-09-22 20:02
  • 4581
  • 10067
blog.csdn.net
参考了《Opencv中Mat矩阵相乘——点乘、dot、mul运算详解 》“http://blog.csdn.net/dcrmg/article/details/52404580”的相关内容。

乘法是线性代数的基本操作,在OpenCV中有三种方法实现了乘法。

一、向量乘法
这两幅图像说明的就是向量乘法。在OpenCV中采用" . "来实现,要求是第一个矩阵的列值等于第二个矩阵的行值。且每个矩阵都是float结构。

    Mat A  = Mat( 3, 3,CV_32FC1,Scalar( 0));
    Vec3f v ( 1, 2, 3);
    Mat B  = Mat(v);
     
    A.at < float >( 0, 0) = 1;  
    A.at < float >( 0, 1) = 2;  
    A.at < float >( 0, 2) = 3;  
    A.at < float >( 1, 0) = 4;  
    A.at < float >( 1, 1) = 5;  
    A.at < float >( 1, 2) = 6;  
    A.at < float >( 1, 0) = 4;  
    A.at < float >( 1, 1) = 5;  
    A.at < float >( 1, 2) = 6;
    Mat AB  = A *B;
二、数量乘法
对于输入的矩阵
和
数量乘法的结果为
那么可以看出来,这里要求a和b的向量结构是一样的,在OpenCV中,如果a和b是多维向量的话,那么首先是将其拉长为一维向量,然后做乘法。
 
    Mat A =Mat : :ones( 2, 3,CV_8UC1);  
    Mat B =Mat : :ones( 2, 3,CV_8UC1);  
    A.at <uchar >( 0, 0) = 1;  
    A.at <uchar >( 0, 1) = 2;  
    A.at <uchar >( 0, 2) = 3;  
    A.at <uchar >( 1, 0) = 4;  
    A.at <uchar >( 1, 1) = 5;  
    A.at <uchar >( 1, 2) = 6;  
  
    B.at <uchar >( 0, 0) = 1;  
    B.at <uchar >( 0, 1) = 2;  
    B.at <uchar >( 0, 2) = 3;  
    B.at <uchar >( 1, 0) = 4;  
    B.at <uchar >( 1, 1) = 5;  
    B.at <uchar >( 1, 2) = 6;  
    double AB =A.dot(B);  
三、乘法
最后介绍.mul这种乘法。这种乘法就是直接理解意义上的乘法。对于
乘法的结果为
参考代码
 
    Mat A  = Mat( 3, 3,CV_32FC1,Scalar( 0));
    Mat B  = Mat(v);
    A.at < float >( 0, 0) = 1;  
    A.at < float >( 0, 1) = 2;  
    A.at < float >( 0, 2) = 3;  
    A.at < float >( 1, 0) = 4;  
    A.at < float >( 1, 1) = 5;  
    A.at < float >( 1, 2) = 6;  
    A.at < float >( 1, 0) = 4;  
    A.at < float >( 1, 1) = 5;  
    A.at < float >( 1, 2) = 6;
    Mat AB  = A *B;
     //
    Mat C  = Mat( 3, 3,CV_32FC1,Scalar( 0));
    C  = A.clone();
    Mat AC  = A.mul(C);
 
 
 
四、小结
1、以上三种函数,都是以Mat作为输入参数和输出结果的;
2、. 这种乘法要求两个矩阵都是float结果,后两者只要求两个矩阵的结果是一样的;
3、可以看到,.这种乘法要求第一个矩阵的行值等于第二个矩阵的列值,而后两种乘法则要求参加运算的两个矩阵结构完全一样。
 



来自为知笔记(Wiz)



文章知识点与官方知识档案匹配,可进一步学习相关知识
OpenCV技能树首页概览20473 人正在系统学习中
相关资源:cuda-opencv-examples:将自定义CUDA内核与OpenCVMat对象一起使用...
注:本文转载自blog.csdn.net的weixin_34375054的文章"https://blog.csdn.net/weixin_34375054/article/details/85901376"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top