OpenCV入门(1):图像的加载,显示和写入文件

图像的加载:imread()

函数原型Mat imread(const String& filename, int flags)

  • 第一个参数 filename 是图片的路径
  • 第二个参数 flags 为载入标志,指定一个加载图像的颜色类型,默认值为1

支持的图片格式:

  • Windows bitmaps - .bmp, .dib 
  • JPEG files - .jpeg, .jpg, *.jpe 
  • JPEG 2000 files - *.jp2 
  • Portable Network Graphics - *.png
  • WebP - *.webp 
  • Portable image format - .pbm, .pgm, .ppm .pxm, *.pnm
  • PFM files - *.pfm 
  • Sun rasters - .sr, .ras 
  • TIFF files - .tiff, .tif
  • OpenEXR Image files - *.exr 
  • Radiance HDR - .hdr, .pic 
  • Raster and Vector geospatial data supported by GDAL 

第二个参数flags对应的值:

  • IMREAD_UNCHANGED                           = -1     //返回的数据带有alpha通道(R,G,B,A )
  • IMREAD_GRAYSCALE                            = 0       //将图像转换为单通道灰度图像
  • IMREAD_COLOR                                     = 1       //将图像转换成3通道BGR彩色图像
  • IMREAD_ANYDEPTH                              = 2       //在输入具有相应深度时返回16位/32位图像
  • IMREAD_ANYCOLOR                             = 4,       //图像可能以任何颜色格式读取
  • IMREAD_LOAD_GDAL                            = 8,       //使用gdal驱动程序加载图像
  • IMREAD_REDUCED_GRAYSCALE_2    = 16      //将图像转换为单通道灰度图像且图像大小减少1/2
  • IMREAD_REDUCED_COLOR_2             = 17      //将图像转换为3通道BGR彩色图像且图像大小减少1/2
  • IMREAD_REDUCED_GRAYSCALE_4    = 32      //将图像转换为单通道灰度图像且图像大小减少1/4
  • IMREAD_REDUCED_COLOR_4             = 33      //将图像转换为3通道BGR彩色图像且图像大小减少1/4
  • IMREAD_REDUCED_GRAYSCALE_8    = 64      //将图像转换为单通道灰度图像且图像大小减少1/8  
  • IMREAD_REDUCED_COLOR_8             = 65      //将图像转换为3通道BGR彩色图像且图像大小减少1/4
  • IMREAD_IGNORE_ORIENTATION         = 128    //不会根据EXIF的方向标志旋转图像

 

图像的显示:imshow()

 函数原型:imshow (const String &winname, InputArray mat) 

  • 第一个参数是显示的窗口名称
  • 第二个参数为显示的图像

 

图像的写入:imwrite()

函数原型:bool imwrite(const String& filename,  InputArray img,  const std::vector<int>& params = std::vector<int>())

  • 第一个参数表示需要写入的文件名,必须要加上后缀,比如“1.jpg”
  • 第二个参数表示Mat类型的图像数据
  • 第三个参数表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),一般情况下不用写这个参数

 

代码示例

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {
    // 创建四个图像的矩阵,内容为同一张图片的不同颜色类型
    Mat image1 = imread("/home/efort/Downloads/timg.jpeg", 1);
    Mat image2 = imread("/home/efort/Downloads/timg.jpeg", 0);
    Mat image3 = imread("/home/efort/Downloads/timg.jpeg", 16);
    Mat image4 = imread("/home/efort/Downloads/timg.jpeg", 32);
    
    // 显示四张不同颜色类型的图片
    imshow("原图", image1);
    imshow("灰度图", image2);
    imshow("1/2灰度图", image3);
    imshow("1/4灰度图", image4);

    // 将image1和image2写入目录,注意后面有.jpg的后缀
    imwrite("/home/efort/Downloads/原图.jpg", image1);
    imwrite("/home/efort/Downloads/灰度图.jpg", image2);

    waitKey(0);    // 一直显示窗口,直到任意按键按下
    return 0;
}

运行结果如下 ,出现了四张不同颜色类型的图,并且在Downloads这个目录下创建了原图.jpg和灰度图.jpg这两个文件。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值