对图像的色彩转换用到cvtColor()函数,本章将对此其用法进行解析。
-
目录
一、色彩空间转换
官方定义
函数参数解释
代码演示
RGB——HSV RGB——GRAY
BGR——RGB
总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、色彩空间转换
APL:cvtColor()
官方定义
void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
函数参数解释
1.src(source):输入的源图像。为矩阵形式。
2.dst(destination):输出的目标图像,即经过色彩转后我们需要得到的图像。也为矩阵形式。
3.code:颜色空间转换的标识符,表示我们所要进行空间转换的结果。
code的参数多达200多,在此列举一些常用的参数,更多参数请查阅opencv官方文档
空间转换 | 标识符 | code |
BGR——灰度 | COLOR_BGR2GRAY | 6 |
RGB——灰度 | COLOR_RGB2GRAY |
7 |
灰度——RGB/BGR | COLOR_GRAY2RGB = COLOR_GRAY2BGR |
8 |
BGR——HSV | COLOR_BGR2HSV | 40 |
RGB——HSV | COLOR_RGB2HSV | 41 |
HSV——BGR | COLOR_HSV2BGR | 54 |
HSV——RGB | COLOR_HSV2RGB | 55 |
BGR——RGB RGB——BGR |
COLOR_BGR2RGB = COLOR_RGB2BGR |
4 |
注意!此处有知识点!在opencv中彩色图像(RGB图像)按照BGR顺序进行存储。
所以以彩色图像为源图像进行颜色空间转换时,注意是“BGR2 ”
4.dstCn:目标图像的通道数。
默认值为0,表示目标图像取源图像的通道数 。
代码演示
RGB——HSV RGB——GRAY
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat str = imread("C:/素材/11.jpg");//读取图片,定义Mat类型,不设置imread的第二个参数默认读入彩色图片
Mat imghsv,imggray;//定义目标图像
cvtColor(str,imghsv,COLOR_BGR2HSV);//将str转换为HSV图像保存在imghsv中
cvtColor(str, imggray, COLOR_BGR2GRAY);//将str转换为GRAY图像,保存在imggray中
if (str.empty())//判断是否找到图片
{
printf(“没有找到图片”);
return -1;
}
else
{
//WINDOW_FREERATIO显示的大小可以自由更改
//WINDOW_AUTOSIZE显示大小为图片自定义大小,不可更改
namedWindow("原图”, WINDOW_FREERATIO);
imshow("原图”,str);//显示源图片
namedWindow("HSV图像”, WINDOW_FREERATIO);
imshow("HSV图像”, imghsv);//显示HSV图像
namedWindow("GRAY图像”, WINDOW_FREERATIO);
imshow("GRAY图像”, imggray);//显示GRAY图像
waitKey(0);//显示的毫秒时间,函数参数>0表示显示的时间,否则为一直显示
destroyAllWindows();//销毁所有窗口
}
return 0;
}
BGR——RGB
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat str = imread("C:/素材/11.jpg"),imgRGB;
cvtColor(str, imgRGB, COLOR_BGR2RGB);
if (str.empty())//判断是否找到图片
{
printf("没有找到图片");
return -1;
}
else
{
imshow("RGB图像", imgRGB);
waitKey(0);
}
return 0;
}
彩色图像三通道顺序变化(还挺好看) 文章来源:https://www.toymoban.com/news/detail-445748.html
总结
以上就是颜色空间转换的内容,大家快动手试试叭!欢迎在评论区交流~文章来源地址https://www.toymoban.com/news/detail-445748.html
到了这里,关于初学opencv c++学习笔记(二)图像空间色彩转换cvtColor()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!