opencv可以将图像以不同的方式组合,图像其实就是一般的矩阵,所以它们可以做加减乘除。opencv提供了各种图像算术操作符。

1【首先我们对两幅图像进行操作】

当我们需要一些图像特效或者在图像上叠加信息时,就需要用到图像加法。我们只需调用cv::add函数就可以完成,更准确的说是cv::addWeighted()函数来完成图像的加法。cv::addWeighted(image, 0.7, imag1, 0.9, 0.,result);

效果如下

所有的二值算术函数工作方式都是一样的,他接受两个输入变量和一个输出变量。在一些情况下,还需要指定权重作为运算中的标量因子。每种函数都有几个不同的形式:

//c[i] = a[i] + b[i];

cv::add(imageA, imageB, resultC);

//c[i] = a[i] + k;

cv::add(imageA, cv::Scalar(k), resultC);

//c[i] = k1 * a[i] + k2 * b[i] + k3;

cv::addWeighted(imageA, k1, imageB, k2, k3, resultC);

//c[i] = k * a[i] + b[i];

cv::scaleAdd(imageA, k,imageB,resultC);

//对某些函数,还可以指定一个图像的掩模

//if(mast[i]) c[i] = a[i] + b[i]

cv::add(imageA,imageB, resultC, mask);

参与运算的图像必须相同的大小和类型(输出图像如果合适不符,那么他会被重新分配)同样,由于运算是逐像素进行的,输入图像之一也可以作为输出图像。

opencv给我们重载了操作符,上面的操作可以换成下面:reslut = 0.7 * image + 0.9 * image,效果是一样的。有时候我们想对彩色图像的一个通道进行运算,我们可以使用cv::split函数将彩色图像的三个通道分别拷贝到三个独立的cv::Mat实例中,然后对其中一个通道单独处理:

std::vector(cv::Mat) planes;

cv::split(image, planes);

planes[0] += image1;

cv::merge(planes, result);

函数cv::merge是cv::splitr的对偶运算,它将三个单通道合并一个彩色通道。

其他操作基本都和加运算差不多,这里就不一一介绍了。

opencv(三)对图像进行简单算术运算(加减乘除)相关推荐

  1. opencv 三通道图像转四通道透明图像

    添加透明通道. 使用split(),merge(),合成图像通道. 把3通道的rgb转为4通道,设置alpha=0.并保存图像. #include <opencv2/opencv.hpp> ...

  2. Opencv学习笔记 图像特效 简单铅笔/卡通/马赛克/毛玻璃/Lomography/简单磨皮等效果

    一.铅笔画滤镜 铅笔画滤镜主要是提取出图片中梯度比较高的部分,也就是边缘检测 二.卡通画特效 卡通画特效主要由三部分组成 1.提取图像中轮廓 => edges 2.使用bilateral 滤波在 ...

  3. 10.马赛克原理之简单提高图像算法性能(颜色空间缩减和计时函数) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

    本文作者:小嗷 微信公众号:aoxiaoji 关键词:颜色空间缩减和计时函数[两个简便的计时函数-getTickCount()和getTickFrequency()] 计时函数用途:计算耗时工作 颜色 ...

  4. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  5. OpenCV python 提取图像内的三色

    OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...

  6. OpenCV优化:图像的遍历4种方式

    小知识:反色 反色原理很简单,在一个rgb色彩空间中,可将任何一种颜色看成笛卡尔坐标中的一个点,对于任意点,反色就是计算以(128, 128,128)为中心时该点的对称点,比如rgb(100, 150 ...

  7. OpenCV 【十二】OpenCV如何扫描图像、利用查找表和计时

    目录 OpenCV如何扫描图像.利用查找表和计时 1.函数计算时间测试case 2. Mat图像的存储机理 3. 像素遍历的3--4种方式 4. 实例 OpenCV如何扫描图像.利用查找表和计时 如何 ...

  8. 解密 | OpenCV加载图像大小是有限制的 ?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 问题来由 最近有人问一个问题,就是它有个大小800MB的图像文件, ...

  9. OpenCV访问Mat图像中每个像素的值

    原文:http://blog.csdn.net/xiaowei_cqu/article/details/7771760 matlab中, a=[1,2,3;4,5,6;7,8,9] a(1,2) 第一 ...

最新文章

  1. java定时执行一段代码
  2. Mac OS X中配置Apache
  3. sklearn自学指南(part13)--贝叶斯回归
  4. 棒棒糖 宏_棒棒糖图表
  5. Linux 命令整理
  6. .NET,你忘记了么?(六)——再谈String
  7. jquery判断是否隐藏
  8. python常用算法有哪些_python常见排序算法基础教程
  9. 阿里云基础产品技术月刊 2018年12月
  10. 汇编语言10堆栈平衡
  11. icem二维非结构网格划分_Ansys Icem CFD网格划分实例详解PDF及附件
  12. 切换进程 切换线程
  13. 开源3D建模软件FreeCAD基础介绍与入门
  14. python开发_filecmp
  15. 直线端点画垂线lisp_利用lisp给cad直线取整?
  16. 浅谈Android中的Fragment
  17. Ray Tracing
  18. 从如“何看待人工智能“”开始
  19. 有关华为的七大猜想:或在国内屈居老二
  20. 长度厘米转换c语言程序,标准长度单位换算c程序设计.doc

热门文章

  1. 京东网站顶部导航条 (练习) HTML+CSS
  2. “程序猿”面试篇(一)聊项目
  3. 怎么用python启动谷歌浏览器_Selenium 基于python 安装以及配置谷歌浏览器启动
  4. 硬件防火墙 与软件防火墙
  5. SAS学习之基本统计过程
  6. 「大数据的关键思考系列」15:阿里巴巴的大数据实践(1)
  7. Python 使用pyinstaller打包exe文件报错: TypeError: an integer is required (got type bytes) 的解决方法
  8. 《年度区块链产业发展报告(2020)》重磅发布,透视产业应用现状与未来
  9. pg 百万数据表 添加序号 20秒轻松搞定
  10. C# 制作贪吃蛇小游戏,最简单的实现