实操教程|OpenCV中保存不同深度图像的技巧

2022 年 2 月 14 日 极市平台
↑ 点击 蓝字  关注极市平台

来源丨OpenCV学堂
编辑丨极市平台

极市导读

 

本文详解了OpenCV中保存不同深度图像的两种方法。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

什么是图像深度

很多人开始学习OpenCV之后,接触前面几个API就包括imwrite函数,而且很快知道了如何去保存Mat对象为图像,常规代码如下:

imwrite("D:/result.png ", dst);

其中dst是Mat对象。

这样保存的图像默认是每个通道8位的字节图像,常见的RGB图像是图像深度为24,这个可以通过windows下查看图像属性获得,截图如下:

如果每个通道占16位的话,RGB图像深度就会变成48,如果每个通道占32位的话,深度就会变成96,显然图像深度越大,图像文件也会越多,加载时候消耗的内存也会越多,所以OpenCV中默认读写图像都是每个通道8位(单字节)图像。

重温imwrite函数

假设我们想保存图像为16位或者32位浮点数图像时候,我们该怎么去做,在开始之前我们首先再次复习一下OpenCV中保存图像的API函数-imwrite

bool cv::imwrite(
   const String &  filename,
   InputArray img,
   const std::vector< int > &  params = std::vector< int >()
)
Filename 参数为声明的文件保存路径
Img参数表示的是将要保存的Mat图像对象
Params 表示的是保存图像时的选项,

这些选项包括PNG/JPG/WEBP/TIFF压缩质量、格式选择等,可以分为如下四个大类

  • ImwriteEXRTypeFlags

  • ImwriteFlags

  • ImwritePAMFlags

  • ImwritePNGFlags,

之前写过一篇文章是关于在保持时候如何使用这些选项对图像进行适当的压缩处理,这里关于Params参数使用方式就不再赘述,主要是基于key-value方式添加到vector中去即可。

imwrite函数在关于保存为不同深度格式时候的图像类型支持说明如下:

  • 8位的图像(CV_8U),支持png/jpg/bmp/webp等各种常见图像格式

  • 16位的图像(CV_16U),支持png/jpeg2000/TIFF格式

  • 32位的图像(CV_32F),支持PFM/TIFF/OpenEXR/TIFF/HDR

在要保存为指定格式之前,可以通过convertTo或者cvtCOLOR进行图像类型或者通道转换之后,再调用imwrite进行保存。

各种不同深度保存

16位图像保存

转换之后,如果直接保存,代码如下:

// 加载图像
Mat src = imread("D:/flower.png", IMREAD_UNCHANGED);
printf("depth %d \n", src.depth());

// 转为为16位图像
Mat dst;
src.convertTo(dst, CV_16U);
imshow("flower16", dst);
imwrite("D:/flower-16.png", dst);


转换之后,归一化之后再保存,代码如下:

// 加载图像
Mat src = imread("D:/flower.png", IMREAD_UNCHANGED);
printf("depth %d \n", src.depth());

// 转为为16位图像
Mat dst;
src.convertTo(dst, CV_16U);

// 归一化再保存
normalize(dst, dst, 0, 256 * 256, NORM_MINMAX);
imwrite("D:/flower-16.png", dst);
imshow("flower-16", dst);


两者效果对比如下:

32位图像保存

// 加载图像
Mat src = imread("D:/flower.png", IMREAD_UNCHANGED);
printf("depth %d \n", src.depth());

// 转为为16位图像
Mat dst;
src.convertTo(dst, CV_32F);

// 归一化再保存
normalize(dst, dst, 0, 1.0, NORM_MINMAX);
imwrite("D:/flower-32.png", dst);
imshow("flower-32", dst);


对上述各种不同深度的图像,必须通过下面的方式才可以正确读取

Mat src = imread("D:/flower.png", IMREAD_UNCHANGED);

其中IMREAD_UNCHANGED表示不对原图像做任何改变。


公众号后台回复“数据集”获取30+深度学习数据集下载~

△点击卡片关注极市平台,获取 最新CV干货
极市干货
数据集资源汇总: 10个开源工业检测数据集汇总 21个深度学习开源数据集分类汇总
算法trick 目标检测比赛中的tricks集锦 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述: 一文弄懂各种loss function 工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~


觉得有用麻烦给个在看啦~   
登录查看更多
0

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
【2022新书】Python手册,275页pdf
专知会员服务
179+阅读 · 2022年3月18日
专知会员服务
91+阅读 · 2020年12月26日
最新《自动微分》综述教程,71页ppt
专知会员服务
21+阅读 · 2020年11月22日
还在修改博士论文?这份《博士论文写作技巧》为你指南
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
实操教程|CUDA WarpReduce 学习笔记
极市平台
1+阅读 · 2022年4月6日
实践教程 | 使用Pytorch从头实现Canny边缘检测
极市平台
10+阅读 · 2022年3月4日
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
实操教程|怎样制作目标检测的训练样本图像?
极市平台
1+阅读 · 2022年2月20日
实操教程|基于OpenCV的条形码区域分割
极市平台
3+阅读 · 2022年2月7日
实践教程|基于OpenCV提取特定区域方法汇总
极市平台
1+阅读 · 2021年12月5日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月19日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Arxiv
22+阅读 · 2018年8月30日
VIP会员
相关VIP内容
相关资讯
实操教程|CUDA WarpReduce 学习笔记
极市平台
1+阅读 · 2022年4月6日
实践教程 | 使用Pytorch从头实现Canny边缘检测
极市平台
10+阅读 · 2022年3月4日
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
实操教程|怎样制作目标检测的训练样本图像?
极市平台
1+阅读 · 2022年2月20日
实操教程|基于OpenCV的条形码区域分割
极市平台
3+阅读 · 2022年2月7日
实践教程|基于OpenCV提取特定区域方法汇总
极市平台
1+阅读 · 2021年12月5日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
相关基金
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员