当前位置:首页 > 编程笔记 > 正文
已解决

Opencv——颜色模型+通道分离与合并

来自网友在路上 159859提问 提问时间:2023-10-20 00:47:13阅读次数: 59

最佳答案 问答题库598位专家为你答疑解惑

视频加载/摄像头调用

VideoCapture允许一开始定义一个空的对象
VideoCapture video

VideoCapture(const String &filename,int apiPreference=CAP_ANY)
filename:读取的视频文件或者图像序列名称
apiPreference:读取数据时设置的属性,例如编码格式、是否调用OpenNi等

在这里插入图片描述
使用方法:video.get(CAP_PROP_FPS) 返回值即为视频的帧数

视频文件保存

VideoWriter(const String& filename,int fourcc,double fps,Size frameSizebool isColor = true)
  • filename:保存视频的地址和文件名,包含视频格式
  • fourcc:压缩帧的4字符编码器代码,详细参数在表2-7给出
  • fps:保存视频的帧率,即视频中每秒图像的张数
  • isColor:保存视频是否为彩色视频

图像颜色空间介绍

RGB颜色模型

在这里插入图片描述
图像数据类型间的相互转换

converTo(OutputArray m,int rtype,double alpha=1,double beta=0)
m:输出图像
rtype:转换后数据类型
alpha:缩放系数
beta:平移系数
示例:
a.convertTo(b,CV_32F,1/225.0,0)

HSV颜色模型

在这里插入图片描述

Gray颜色模型

在这里插入图片描述
彩色图像可以转换为灰度图像

多通道分离与合并

多通道分离

split(InputArray m,OutputArrayOfArrays mv)
m:待分离的多通道图像
mv:分离后的单通道图像,为向量vector形式
	Mat imgs[3];Mat img = imread("C:/Users/86159/Desktop/1.jpg",1);split(img, imgs);Mat img0, img1, img2;img0 = imgs[0];img1 = imgs[1];img2 = imgs[2];cin.get();

多通道合并

merge(InputArrayOfArrays mv,OutputArray dst)
mv:需要合并的图像向量vector,其中每个图像必须拥有相同的尺寸和数据类型
dst:合并后输出的图像,通道数等于所有输入图像的通道数综合
Mat zero = Mat::zeros(Size(img.cols,img.rows),CV_8UC1);// 合并后的图像第二三个通道都是0vector<Mat> imgsV;imgsV.push_back(img0);imgsV.push_back(zero);imgsV.push_back(zero);Mat imgsVH;merge(imgsV, imgsVH);
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Opencv——颜色模型+通道分离与合并":http://eshow365.cn/6-19951-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!