ubuntu18.04 opencv3.4.4 使用spilt()函数实现图片颜色通道分离(基于交通标志识别)
1.首先创建一个文件夹并添加图片(名称可以随意定义)
2.找到该文件夹的路径
3.添加到代码中
4.来运行一下看看效果(可以按任意键切换图片)
话不多说上原代码:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
#include <string>
#include <dirent.h>
using namespace std;
using namespace cv;
int main(int argc,char** argv)
{
DIR *dir;
struct dirent *entry;
string ImagName;
Mat image;
vector<Mat> channels;
Mat imageBlueChannel;
Mat imageGreenChannel;
Mat imageRedChannel;
if((dir=opendir("/home/yu/Desktop/ex/carphoto"))!=NULL) //该路径为你的文件夹路径
{
while((entry=readdir(dir))!=NULL)
{
cout<<entry->d_name<<endl; //显示文件的名称
ImagName=entry->d_name;
ImagName="/home/yu/Desktop/ex/carphoto/" + ImagName; //使ImageName形成绝对路径
image=imread(ImagName,1);
if(!image.data) //判断图片是否可以打开
{
continue;
}
else
{
imshow("原图",image);
split(image,channels);//分离色彩通道
imageBlueChannel=channels.at(0);
imageGreenChannel=channels.at(1);
imageRedChannel=channels.at(2);
imshow("蓝色",imageBlueChannel);
imshow("绿色",imageGreenChannel);
imshow("红色",imageRedChannel);
waitKey(0);
}
}
}
else
{
printf("Error opening \n");
}
closedir(dir);
system("pause");
return 0;
}