opencv学习之路(8)、基本图像运算——加减与或
一、图像加法
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
Mat img1=imread("E://1.jpg");
Mat img2=imread("E://2.jpg");
Mat dst;//存储结果
imshow("img1",img1);
imshow("img2",img2);
cout<<"img1 "<<int(img1.at<Vec3b>(,)[])<<endl;//img1在坐标(10,10)的蓝色通道的值,强制转成int
cout<<"img2 "<<int(img2.at<Vec3b>(1,1)[])<<endl; dst=img1+img2;//这两个加法效果相同
//add(img1,img2,dst);//注意:这两个加法要求被加的图片尺寸必须一致
//addWeighted(img1,0.5,img2,0.5,0,dst);//按权重相加,下一行dst输出参数为正常参数的一半
cout<<"dst "<<int(dst.at<Vec3b>(1,1)[])<<endl;
imshow("dst",dst);
waitKey();
}

两幅图的(10,10)处蓝色通道值相加大于了255,所以dst值为255,我们换一个小一点的坐标(420,420)试试

二、图像减法
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
Mat img1=imread("E://1.jpg");
Mat img2=imread("E://5.jpg");
Mat dst;//存储结果
imshow("img1",img1);
imshow("img2",img2);
cout<<"img1 "<<int(img1.at<Vec3b>(,)[])<<endl;//img1在坐标(10,10)的蓝色通道的值,强制转成int
cout<<"img2 "<<int(img2.at<Vec3b>(,)[])<<endl; //dst=img1-img2;//这两个减法效果相同 若dst<0,则dst=0
//subtract(img1,img2,dst);//注意:要求被处理图片尺寸一致
absdiff(img1,img2,dst);//若dst<0,则dst=|dst|>=0 用于检测两幅相似图像的不同点,效果比上面的两种减法好
cout<<"dst "<<int(dst.at<Vec3b>(,)[])<<endl;
imshow("dst",dst);
waitKey();
}

三、乘除与或非
dst=*img1;//增加曝光
dst=img1/;//降低曝光
bitwise_and(img1,img2,dst);//逻辑与,求交集
bitwise_or(img1,img2,dst);//逻辑或,求并集
bitwise_not(img1,dst);//逻辑非,求补集
bitwise_xor(img1,img2,dst);//异或,相同为0,相异为1




opencv学习之路(8)、基本图像运算——加减与或的更多相关文章
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...
- OpenCV 学习之路(2) -- 操作像素
本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...
- OpenCV学习笔记(七) 图像金字塔 阈值 边界
转自: OpenCV 教程 使用 图像金字塔 进行缩放 图像金字塔是视觉运用中广泛采用的一项技术.一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到 ...
- opencv学习之路(30)、分水岭算法及图像修补
一.简介 二.分水岭算法 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat srcImg = ...
- opencv学习之路(13)、图像阈值化threshold
一.图像阈值化简介 二.固定阈值 三.自适应阈值 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src ...
- opencv学习之路(12)、图像滤波
一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...
- opencv学习之路(11)、图像几何变换
一.图像缩放 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src=imread("E:// ...
随机推荐
- mybatis--parametertype的参数传递
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- JavaScript原型继承的实例
// 创建构造函数实例(获取DOM节点) <div id="app">测试字符</div>
- Mongodb 分组查询例子
db.tblCard.aggregate([ { $match: { "sNo": { " ...
- linux中截取文件的特定字节(去掉utf-8 bom头)
事出有因,之所以要截取特定字节,是为了给utf-8编码的文件去掉bom头. bom头好去啊,notepad++文本编辑器中就有这个功能啊.可是,问题所在是要编辑的文件太大了,300MB,小电脑卡shi ...
- Apache Storm Installation
安装的过程参照此处的过程介绍(https://www.tutorialspoint.com/apache_storm/apache_storm_installation.htm) 安装的过程要安装3个 ...
- c#关于字符串格式化
1. 如何使用文化来格式化日期 如: /// <summary> /// 根据语言获取文化名称 /// </summary> /// <returns></r ...
- notepad怎么把空格替换成回车?
替换时选中“使用正则表达式”查找里输入\s替换里输入\r然后“全部替换”即可
- [14]Windows内核情景分析 --- 文件系统
文件系统 一台机器上可以安装很多物理介质来存放资料(如磁盘.光盘.软盘.U盘等).各种物理介质千差万别,都配备有各自的驱动程序,为了统一地访问这些物理介质,windows设计了文件系统机制.应用程序要 ...
- 元素位置pageX,pageY,clientX,clientY,scrollX,scrollY,screenX,screenY,offsetX,offsetY
总结: event.clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. (可见区域)event.clientY 设置或获取鼠标指针位置相对于当 ...
- 20155228 2017-5-10 课堂测试:MySort
20155228 2017-5-10 课堂测试:MySort 题目和要求 模拟实现Linux下Sort-t:-k2的功能.参考Sort的实现.提交码云链接和代码运行截图. import java.ut ...