opencv-imwrite保存函数
注意不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U)
保存PNG格式的时候可以保存透明通道的图片
可以指定压缩参数
如果Mat类型数据的深度和通道数不满足上面的要求,则需要使用convertTo()函数和cvtColor()函数来进行转换。convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。另外也可以不用imwrite()函数来存图片数据,可以直接用通用的XML IO接口函数将数据存在XML或者YXML中
//IDE:VS2019 #include<opencv2/opencv.hpp> #include<iostream> #include <vector> int main(int argc, char** argv) { cv::Mat img = cv::imread("D:/bb/tu/sansui.jpg"); std::vector< int > par; //创建vector对象,用来存储质量压缩信息 par.push_back(cv::IMWRITE_JPEG_QUALITY); //jpg格式 par.push_back(50); cv::imwrite("D:/bb/tu/test.jpg", img,par); //保存图像 /*参数3:该参数是一个vector<int>类型, 表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),所以一般情况下不用写 里面分别存入paramId_1, paramValue_1, paramId_2, paramValue_2, ... 也就是说存入一对属性值。如果不设置该参数的话,则程序会自动根据所保存的图像格式采用一个默认的参数 如果更改的话,对于不同的图片格式,其对应的值不同功能不同,如下: 对于JPEG格式的图片,这个参数表示从0-100的图片质量(cv::IMWRITE_JPEG_QUALITY),默认值是95 对于PNG格式的图片,这个参数表示压缩级别(cv::IMWRITE_PNG_COMPRESSION)从0-9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3 对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(cv::IMWRITE_PXM_BINARY),取值为0或1,而默认值为1 */ cv::waitKey(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-10-10 C++--win32
2019-10-10 python--Excel模块xlwings