OpenCV的部分操作

前言

参考书籍:《OpenCV3编程入门_毛星云编》

个别函数

1、imread

原型:

Mat immread(filename , int flags = 1 );

参数二,指定一个加载图像颜色的类型,默认为1。
此参数可以用标识符代替:

标识符等价取值含义
CV_LOAD_IMAGE_UNCHANGED-1已抛弃
CV_LOAD_IMAGE_GRAYSCALE0转换成灰度图
CV_LOAD_IMAGE_COLOR1载入彩色图像
CV_LOAD_IMAGE_ANYDEPTH2。。。没看懂啥意思

2、颜色空间转换 cvtColor()

cvtColor( src , dst , int code , int cstCn = 0 )
第一个参数为输入图像
第二个参数为输出图像
第三个参数为颜色空间转换标识符
第四个参数为目标图像的通道数,若为0,则取原图的通道数

在这里插入图片描述OpenCV默认的图片通道存储顺序是BGR,即蓝绿红,而不是RGB

3、split分离通道函数

#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
vector(Mat) channels;
int main(){
	Mat frame;
	frame = imread("11");
	split(frame,channels);
		 imageROIB = channels.at(0);//分成BGR三个通道
         imageROIG = channels.at(1);
         imageROIR = channels.at(2);
	return 0;
}
注: 
vector是C++里的一个容器,此处用于承接矩形。
vector使用命名空间std;
vector是STL的动态数组,可以在运行中根据需要改变数组的大小。

C一般用其中的Mat::at()方法对某个通道进行存取,也就是这样用:channels.at(0)

4、图像相减absdiff

absdiff(imageROIB,imageROIR,minor);//红蓝通道相减

参数一、二代表图像,两图像的像素分别相减并取绝对值,得到参数三的图像

5、图像二值化threshold

threshold(minor,pic2,10,255,THRESH_BINARY);

参数一表示原图
参数二表示二值化后得到的图
参数三表示阈值
参数四表示超过阈值所赋的值
参数五表示二值化的类型,此处为标准类型

6、图像的相加addWeighted

addWeighted(pic1,0.5,pic2,0.5,0,pic);
参数含义
1图1
2所占权值
3图二
4所占权值
5附加值
6得到的图像

附加值是啥?
像素值=图一*相应权值+图二 * 相应权值+附加值

一、Mat类

1、构建mat对象

(1)Mat()
Mat M(2,2,8UC3,Scalar(0,0,255));

对于二维多通道图像,首先定义尺寸(行、列);
接着,指定储存元素的数据类型以及每个矩阵点的通道数;

下列规定:CV_[位数][带符号与否][类型前缀]C[通道数]

如CV_8UC3:使用8位unsigned char型,每个像素由三个元素组成三通道。

Scalar用于表示颜色。
Scalar()表示具有四个元素的数组,被大量用于传递像素值。如RGB颜色值,但RGB只有三个参数。对于Scalar,如果用不到第四个参数,则不需要写出来;只写三个参数,opencv会认为我们只想要表示三个参数。
例子:

Scalar( a , b , c );

那么定义的RGB颜色值:红色分量为c,绿色分量为b,蓝色分量为a。(bgr的顺序对应abc)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值