概述
首先解释下什么是多通道图像,一个普通的彩色图像的每个像素点是由RGB三种颜色构成的,那么这种图像就是3通道图像,其中单独的R色、G色和B色都分别称为一个单通道图像。opencv中的Mat类型实际上可以理解为一种多维多通道的矩阵,如果一个普通的彩色图像读进来后赋值给一个Mat类型的对象M,那么这个M就是一个二维数组,这个二维数组中的每个元素都是一个含有三个RGB值得数据,那这个M就是一个二维三通道的矩阵。
在opencv2中有一个函数可以将一个三通道的图像中的每个通道单独提取出来,那就是split函数。
C++: void split(const Mat& mtx, Mat* mv)
C++: void split(const Mat& mtx, vector<Mat>& mv)
有这两种定义形式:
参数mtx – 源多通道数组.
参数mv – 目标单通道数组或者单通道数组向量. 在函数中的第一个参数中通道的数和第二个参数数组大小要一致 .提出出来的单通道分别以二维单通道的形式存放在数组mv中。
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<vector>
using namespace std;
using namespace cv;
int main( )
{
Mat src, srcOfMerge;
Mat mv[3];
//读取源彩色图片
src = imread("D:\code\visualstudio\test1\test1\1.jpg");
if( !src.data ) { printf("Error loading src n"); return -1; }
分割彩色图片,提取出来的单通道图片存放在mv中
split(src,mv);
/// Create Windows
namedWindow("RGB", 1);
namedWindow("R", 1);
namedWindow("G", 1);
namedWindow("B", 1);
imshow( "RGB", src);
imshow("R",mv[0]);
imshow("G",mv[1]);
imshow("B",mv[2]);
waitKey(0);
return 0;
}
最后
以上就是香蕉鸵鸟为你收集整理的【opencv学习】之split函数提取多通道图像的单通道图像的全部内容,希望文章能够帮你解决【opencv学习】之split函数提取多通道图像的单通道图像所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复