文章目录

  • 前言
  • 一、Mat运算种类
    • 1.1 代数运算
    • 1.2 类型转换

前言

Mat类是目前opencv最为常用的图像数据格式,其优点在于无需手动开辟内存空间和实时释放,针对此类的各种运算方法有很多,本文按照各种运算方法的种类进行简单的总结和示例。


一、Mat运算种类

将Mat的运算简单的分为以下几种:

1.1 代数运算

    Mat imageadd = image1 + image2;//imshow("加法", imageadd);Mat imageadd1;Mat imageadd2;add(image1, image2, imageadd1);add(image1, 2, imageadd2);//函数重载//imshow("加法", imageadd);Mat imagesub = image1 - image2;//运算符重载//imshow("减法", imagesub);Mat imageAbsdiff;absdiff(image1, image2, imageAbsdiff);//imshow("减法绝对值", imageAbsdiff);Mat imagesub1;subtract(image1, image2, imagesub1);//imshow("减法", imagesub);Mat imageweighted;addWeighted(image1, 0.5, image2, 0.2, 50, imageweighted);//imshow("加权", imageweighted);Mat imagemultiply;multiply(image1, image2, imagemultiply, 1.0, CV_32FC1);//imshow("点乘", imagemultiply);Mat imagedivide;divide(image1, image2, imagedivide, 1.0, -1);//imshow("点除", imagedivide);//非Mat image2not;Mat mask = Mat::zeros(image2.size(), CV_8UC1);mask(Rect(200, 100, 200, 200)) = 255;bitwise_not(image2, image2not, mask);//imshow("非", image2not);//或Mat image2or;bitwise_or(image2, imagesub, image2or, mask);//imshow("或", image2or);//异或Mat image2xor;bitwise_xor(image2, imageadd2, image2xor, mask);imshow("异或", image2xor);//与Mat image2and;bitwise_and(image2, imagesub, image2and, mask);//imshow("与", image2and);

1.2 类型转换

    //---------------------数组和Mat------------------------int height = image.rows;int width = image.cols;//转16位一维数组uint8_t* array1 = new uint8_t[height * width * 3];for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){for (int k = 0; k < 3; k++){array1[i * width * 3 + j * 3 + k] = image.at<cv::Vec3b>(i, j)[k];}        }}Mat image3(height, width, CV_8UC3, array1);

基于C++的opencv中Mat矩阵运算方法总结相关推荐

  1. OpenCV中Mat的属性

    OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是 ...

  2. C++下的OpenCV中Mat类型存储的图像格式

    在调用CV进行图像处理时,经常涉及图像格式转换,经常出现原始图像输入后CV_32F与ushort之间的数据差异导致程序报错,可使用std::cout << "dilated_ty ...

  3. Opencv中Mat的data数据只定义为uchar*类型,

    opencv中Mat的数据定义为指向uchar 的指针,而构造函数又提供了许多其他类型. 其实数据在内存中是一维存储的,而图像基本结构是二维的,3D图像还会是三维的:同时,彩色图像还有多个channe ...

  4. opencv中Mat究竟是什么?

    opencv中Mat究竟是什么?(试着运行一下两个代码) 首先看opencv是怎么显示一张图的 : //#include "stdafx.h"#include <opencv ...

  5. 【人工智能与深度学习】基于能量的模型中的对比方法

    [人工智能与深度学习]基于能量的模型中的对比方法 回顾 在自我监督学习中的对比法 Contrastive embedding 自我监督的结果(MoCo,PIRL,SimCLR) SimCLR 降噪自动 ...

  6. OpenCV中Mat总结

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

  7. Opencv中Mat类详细解读(学习笔记)

    基于windows10.vs2015.OpenCv4.1.0. 目录 1.Mat类简介 2.Mat类的构造与赋值 2.1.Mat类的构造 2.2.Mat类的赋值 3.Mat类支持的运算 3.1Mat类 ...

  8. opencv中mat详细解析

    ##1.起源 OpenCV作为强大的计算机视觉开源库,很大程度上参考了MatLab的实现细节和风格,比如说,在OpenCV2.x 版本以后,越来越多的函数实现了MatLab具有的功能,甚至干脆连函数名 ...

  9. opencv java水平投影_使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分

    由于要做图像的处理,所以最近在学习Opencv的相关知识,学习了Opencv中的Mat对象,查阅了网上的资料,了解了相关知识.现在实现了一个使用Mat对象来进行图像的水平投影与垂直投影,并在此基础之上 ...

最新文章

  1. windows 下frp服务启动_内网穿透frp linux服务端搭建和windows客户端使用
  2. 预告 | AIS (ACL, IJCAI, SIGIR) 2019 论文报告会日程安排
  3. docker安装mysql远程不能访问,虚拟机中docker安装mysql远程无法访问解决方法
  4. 开发板屏幕截图-适用于本公司海思和智源平台
  5. 计算机组成原理和体系结构----软考(到处copy)
  6. pycharm-设快捷代码热键
  7. postfix 过滤中文内容
  8. 排列组合在计算机科学的应用,数学在计算机科学的应用.doc
  9. 大数据可视化技术挑战和措施
  10. [Mac A]为什么国外程序员爱用 Mac?
  11. Winrunner经验总结
  12. POWERSHELL脚本编写利器:PowerGUI Visual Studio Extension
  13. 导入和导出requirement
  14. 白领加薪升迁九大高招
  15. python bmp转jpg_python bmp转换为jpg 并删除原图
  16. win10激活错误,软件授权服务报告无法激活计算机怎么办?
  17. Exynos4412-itop4412 uboot移植
  18. LVGL|lvgl教程之修改lvgl tabview部件顶部框(选项卡)的默认样式
  19. 雷电模拟器运行一直不动解决方案
  20. Minio分布式集群部署(Swarm)

热门文章

  1. NLP的命名实体识别 -- 嵌套实体问题
  2. 游戏中的数学之魔塔数学
  3. Ubuntu安装ssh服务(避坑指南)
  4. 1.1 测控系统对测控电路的要求、测控电路中的重要指标
  5. ES状态查询相关API
  6. matlab 使用小波变换和方差性质处理带状噪声
  7. 神策数据正式推出智能预警分析,你的指标预警小管家上线啦!
  8. 申请苹果开发者账号的方法
  9. 查找附近的“丰巢智能柜”的地址 - 异地查询丰巢快递柜 - 寄快递收快递 - 顺丰速运
  10. CF手游自动挂机刷擎天觉醒魂(1)