OpenCV(三)————图像文件加载显示与保存(c++)

内容:

1.图像文件加载imread()

2.窗口与显示imshow()

3.图像文件保存imwrite

 

1.图像文件加载

  • imread函数

默认的BGR彩色图像加载,此外支持灰度图像与任意格式。

(什么是BGR图像?对颜色空间YUV、RGB的理解

(什么是灰度图像?彩色图像、灰度图像、二值图像

函数及参数详解:OpenCV之imread解析

  • imshow函数

图像显示,不支持透明通道,在显示的时候会改变透明通道的数据,变成普通背景。

想要不改变透明通道的原始数据,应该在输入图像时,加上IMREAD_UNCHANGED参数,以opencv中自带的图片资源opencv-logo.png为例,opencv-logo.png的背景是透明的,直接在linux系统中打开,是这个样子的:

                        

(直接用imshow输出的话是看不出什么差别的,将加和不加参的两种情况的图片用imwrite保存下来再打开,可看出明显差别。)

开始时候,不加IMREAD_UNCHANGED参数:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main(int argc,char** argv)
{
    //  读入图像
    Mat src = imread("/home/bei/Downloads/opencv/samples/data/opencv-logo.png");
    if(src.empty())
    {
        printf("不能找到文件。\n");
        return -1;
    }
    namedWindow("input",WINDOW_AUTOSIZE);
    //imshow("input", src);
    //保存为opencv-logo1.png
    imwrite("../opencv-logo1.png",src);
    imshow("input", src);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

打开保存好的opencv-logo1.png:

    

然后,加上该参数:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main(int argc,char** argv)
{
    //  读入图像
    Mat src = imread("/home/bei/Downloads/opencv/samples/data/opencv-logo.png",IMREAD_UNCHANGED);
    if(src.empty())
    {
        printf("不能找到文件。\n");
        return -1;
    }
    namedWindow("input",WINDOW_AUTOSIZE);
    //imshow("input", src);
    //保存为opencv-logo1.png
    imwrite("../opencv-logo1.png",src);
    imshow("input", src);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

打开保存好的opencv-logo1.png:

    

以上两种情况唯一的区别就是有没有IMREAD_UNCHANGED参数。

其他一些细节:Opencv中的imshow函数详解

  • imwrite

图像保存,支持各种格式。

详细介绍:OpenCV笔记1:用imwrite函数来保存图片

 

总结:

主要是一下参数的用法:

  • IMREAD_UNCHANGED:加载四通道
  • IMREAD_GRAYSCALE:加载灰度图
  • IMREAD_COLOR
  • IMREAD_ANYCOLOR

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值