Opencv存图读图

举报
用户已注销 发表于 2022/02/17 00:38:26 2022/02/17
【摘要】 目录 一,存储图像 1,存储 imwrite 2,编码格式 3,图片位深 二,读取图像 1,读取 imread 2,读取类型 ImreadModes 一,存储图像 1,存储 imwrite imwrite("D:/im2.jpg", image2); 第三个参数缺省了。 2,编码格式 jpg是有损压缩,png...

目录

一,存储图像

1,存储 imwrite

2,编码格式

3,图片位深

二,读取图像

1,读取 imread

2,读取类型 ImreadModes


一,存储图像

1,存储 imwrite

imwrite("D:/im2.jpg", image2);
 

第三个参数缺省了。

2,编码格式

jpg是有损压缩,png是无损压缩,如果对图片要求很高的,还是用png好一点。

3,图片位深

32F类型的图片,像这样存下来之后会变成8U的,读取之后也是8U的,

即使再转换成32F的,也可能和原图有差异。

二,读取图像

1,读取 imread


  
  1. string path = "D:/im2.jpg";
  2. Mat image = imread(path, IMREAD_UNCHANGED);
  3. if (!image.data) {
  4. cout << "imread fail\n";
  5. return;
  6. }

第二个参数是ImreadModes类型的枚举,表示读取的通道数

返回的是一个Mat类型的对象。

成员data是uchar的指针,如果读取失败那么指针为空

2,读取类型 ImreadModes

ImreadModes的源代码:


  
  1. enum ImreadModes {
  2. IMREAD_UNCHANGED = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation.
  3. IMREAD_GRAYSCALE = 0, //!< If set, always convert image to the single channel grayscale image (codec internal conversion).
  4. IMREAD_COLOR = 1, //!< If set, always convert image to the 3 channel BGR color image.
  5. IMREAD_ANYDEPTH = 2, //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.
  6. IMREAD_ANYCOLOR = 4, //!< If set, the image is read in any possible color format.
  7. IMREAD_LOAD_GDAL = 8, //!< If set, use the gdal driver for loading the image.
  8. IMREAD_REDUCED_GRAYSCALE_2 = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2.
  9. IMREAD_REDUCED_COLOR_2 = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2.
  10. IMREAD_REDUCED_GRAYSCALE_4 = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4.
  11. IMREAD_REDUCED_COLOR_4 = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4.
  12. IMREAD_REDUCED_GRAYSCALE_8 = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8.
  13. IMREAD_REDUCED_COLOR_8 = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8.
  14. IMREAD_IGNORE_ORIENTATION = 128 //!< If set, do not rotate the image according to EXIF's orientation flag.
  15. };

-1 IMREAD_UNCHANGED 表示按照图片本身的通道数

0 IMREAD_GRAYSCALE 表示灰度图像,即单通道

1 IMREAD_COLOR 表示按照3通道

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/122966084

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。