计算机视觉OpenCV(c++)学习(1)——图像基本操作

读取并显示图片

/home/warmtree/下载/M1_ComputerVision/Lab2/basic/basic.cpp:12: warning: character constant too long for its type
     char* imageName = '/home/warmtree/下载/M1_ComputerVision/Lab2/Lena.jpg'; //图像路径

第一次用char* imageName来写文件路径,出现编译错误,char更合适用cmd窗口执行时添加图片路径int main(int argc, char** argv),例如char* imageName = argv[1]; //图像路径,最后换用String才算成功把路径导入:)

int main( )
{
    String imageName("/home/warmtree/下载/M1_ComputerVision/Lab2/Lena.jpg");
    //char* imageName = argv[1]; //图像路径
    Mat image; //新建图像对象
    image = imread(imageName, 1); //1 表示BGR格式读取,RGB排列顺序
    Mat gray_image;
    cvtColor(image, gray_image, COLOR_BGR2GRAY); //颜色通道转换 BGR-->Gray
    //imwrite("../../images/Gray_Image.jpg", gray_image); //保存图像
    namedWindow("Original image", WINDOW_AUTOSIZE); //新建窗口
    namedWindow("Gray image", WINDOW_AUTOSIZE);
    imshow("Original image", image); //与窗口对应来显示图片
    imshow("Gray image", gray_image);
    waitKey(0); //0ms 表示无限等待 知道用户按下按键
    destroyAllWindows(); //关闭所有窗口
    return 0;
}

基础操作熟悉python可以轻易的转化成C++,imread读取,imwrite保存,imshow显示

颜色空间变换

BGR格式:在opencv中,其默认的颜色制式排列是BGR而非RGB。所以对于24位颜色图像来说,前8-bit是蓝色,中间8-bit是绿色,最后8-bit是红色。

1.从BGR引申:常见图像格式
2.颜色通道转换:cvtColor()详解,这里我们用到了彩色图像转灰度图像。一般,我们都可以把这种颜色通道计算式变换成矩阵形式,输入输出为列向量色彩通道。
3.色彩空间变化: opencv2.x时颜色空间转换code用的宏定义是CV_前缀开头,而在opencv3.x版本其颜色空间转换code宏定义更改为COLOR_开头。
从RGB空间到lαβ空间的转换需要进行3次变换,即RGB->CIEXYZ->LMS->lαβ,其中,LMS->lαβ是基于对数据的主成分分析(PCA,Principal Component Analysis)得到的,其中l为第一主成分,α为第二主成分,β为第三主成分。

4.常见的R,G,B通道的取值范围:

取值类型
0-255CV_8U类型图片
0-65535CV_16U类型图片
0-1CV_32F类型图片

对于非线性转换,输入的RGB图像必须归一化到其对应的取值范围来或得最终正确的转换结果,一定要注意归一化问题,

img *= 1.0/255;
cvtColor(img, img,CV_BGR2Luv);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥鼠路易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值