OpenCV:imwrite函数保存图片问题

 更新时间:2022年11月10日 09:20:14   作者:欧阳磊  
这篇文章主要介绍了关于OpenCV:imwrite函数保存图片问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

imwrite函数功能

用于将图像保存到指定的文件,可以为各种格式的图像。

函数原型

bool cv::imwrite(const String & filename,
InputArray img,
const std::vector<int> & params = std::vector<int>() 
)   

函数参数

  • filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。
  • img:要保存的图像。
  • params:表示为特定格式保存的参数编码。

注意:

imwrite函数是基于文件扩展名选择图像的格式。通常,使用此功能只能保存8位单通道或3通道(带有BGR通道顺序)图像,但有以下例外:

  • 对于PNG,JPEG2000和TIFF格式,可以保存16位无符号(CV_16U)图像。
  • 32位浮点(CV_32F)图像可以保存为PFM,TIFF,OpenEXR和Radiance HDR格式; 使用LogLuv高动态范围编码(每像素4个字节)保存3通道(CV_32FC3)TIFF图像
  • 可以使用此功能保存带有Alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后。完全透明的像素应该将alpha设置为0,完全不透明的像素应该将alpha设置为255/65535。

如果格式,深度或通道顺序不同,请在保存之前使用Mat :: convertTocv :: cvtColor进行转换。或者,使用通用FileStorage I / O函数将图像保存为XML或YAML格式。

编码参数

IMWRITE_JPEG_QUALITY

Python:cv.IMWRITE_JPEG_QUALITY

对于JPEG,它可以是从0到100的质量(越高越好)。默认值为95。

IMWRITE_JPEG_PROGRESSIVE

Python:cv.IMWRITE_JPEG_PROGRESSIVE

启用JPEG功能,0或1,默认为False。

IMWRITE_JPEG_OPTIMIZE

Python:cv.IMWRITE_JPEG_OPTIMIZE

启用JPEG功能,0或1,默认为False。

IMWRITE_JPEG_RST_INTERVAL

Python:cv.IMWRITE_JPEG_RST_INTERVAL

JPEG重启间隔,0 - 65535,默认为0 - 无重启。

IMWRITE_JPEG_LUMA_QUALITY

Python:cv.IMWRITE_JPEG_LUMA_QUALITY

单独的亮度质量等级,0 - 100,默认为0 - 不使用。

IMWRITE_JPEG_CHROMA_QUALITY

Python:cv.IMWRITE_JPEG_CHROMA_QUALITY

单独的色度质量等级,0 - 100,默认为0 - 不使用。

IMWRITE_PNG_COMPRESSION

Python:cv.IMWRITE_PNG_COMPRESSION

对于PNG,它可以是从0到9的压缩级别。值越高意味着更小的尺寸和更长的压缩时间。如果指定,则策略更改为IMWRITE_PNG_STRATEGY_DEFAULT(Z_DEFAULT_STRATEGY)。默认值为1(最佳速度设置)。

IMWRITE_PNG_STRATEGY

Python:cv.IMWRITE_PNG_STRATEGY

其中一个品种:: ImwritePNGFlags,默认为IMWRITE_PNG_STRATEGY_RLE。

IMWRITE_PNG_BILEVEL

Python:cv.IMWRITE_PNG_BILEVEL

二进制级别PNG,0或1,默认为0。

IMWRITE_PXM_BINARY

Python:cv.IMWRITE_PXM_BINARY

对于PPM,PGM或PBM,它可以是二进制格式标志,0或1.默认值为1。

IMWRITE_EXR_TYPE

Python:cv.IMWRITE_EXR_TYPE

 
IMWRITE_WEBP_QUALITY

Python:cv.IMWRITE_WEBP_QUALITY

覆盖EXR存储类型(默认为FLOAT(FP32))

对于WEBP,它可以是1到100的质量(越高越好)。默认情况下(不带任何参数),如果质量高于100,则使用无损压缩。

IMWRITE_PAM_TUPLETYPE

Python:cv.IMWRITE_PAM_TUPLETYPE

对于PAM,将TUPLETYPE字段设置为为格式定义的相应字符串值。

IMWRITE_TIFF_RESUNIT

Python:cv.IMWRITE_TIFF_RESUNIT

对于TIFF,用于指定要设置的DPI分辨率单位; 请参阅libtiff文档以获取有效值。

IMWRITE_TIFF_XDPI

Python:cv.IMWRITE_TIFF_XDPI

对于TIFF,用于指定X方向DPI。

IMWRITE_TIFF_YDPI

Python:cv.IMWRITE_TIFF_YDPI

对于TIFF,用于指定Y方向DPI。

IMWRITE_TIFF_COMPRESSION

Python:cv.IMWRITE_TIFF_COMPRESSION

对于TIFF,用于指定图像压缩方案。请参阅libtiff以获取与压缩格式对应的整数常量。注意,对于深度为CV_32F的图像,仅使用libtiff的SGILOG压缩方案。对于其他支持的深度,可以通过此标志指定压缩方案; LZW压缩是默认值。

IMWRITE_JPEG2000_COMPRESSION_X1000

Python:cv.IMWRITE_JPEG2000_COMPRESSION_X1000

对于JPEG2000,用于指定目标压缩率(乘以1000)。该值可以是0到1000.默认值是1000。

示例代码

#include <opencv2/opencv.hpp>
#include <iostream>
 
int main()
{
	cv::Mat srcImage;
	//加载图像
	srcImage = cv::imread("image.jpg",1);
	if (srcImage.empty())
	{
		std::cout << "图像加载失败!" << std::endl;
		return -1;
	}
	cv::imshow("主窗口", srcImage);
	//保存图像到当前项目
	cv::imwrite("save.jpg", srcImage);
	cv::waitKey(0);
	//销毁所有窗口
	cv::destroyAllWindows();
	return 0;
}

代码结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Django+Bootstrap实现计算器的示例代码

    Django+Bootstrap实现计算器的示例代码

    本文主要介绍了Django+Bootstrap实现计算器的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 用python 绘制茎叶图和复合饼图

    用python 绘制茎叶图和复合饼图

    这篇文章主要介绍了用python 绘制茎叶图和复合饼图,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • python创建exe文件的实现步骤

    python创建exe文件的实现步骤

    本文主要介绍了python创建exe文件的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Python for循环详细讲解(附代码实例)

    Python for循环详细讲解(附代码实例)

    这篇文章主要给大家介绍了关于Python for循环详细讲解的相关资料,在Python中,for循环是一种常用的控制结构,用于遍历序列(如列表、元组、字符串等)中的元素,需要的朋友可以参考下
    2024-03-03
  • 50行Python代码实现人脸检测功能

    50行Python代码实现人脸检测功能

    现在的人脸识别技术已经得到了非常广泛的应用,支付领域、身份验证、美颜相机里都有它的应用。下面小编给大家带来了基于50行Python代码实现人脸检测功能,一起看看吧
    2018-01-01
  • python单向链表实例详解

    python单向链表实例详解

    这篇文章主要为大家详细介绍了python单向链表实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 如何利用Pyecharts可视化微信好友

    如何利用Pyecharts可视化微信好友

    这篇文章主要给大家介绍了关于如何利用Pyecharts可视化微信好友的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Pyecharts具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 如何用Python合并lmdb文件

    如何用Python合并lmdb文件

    这篇文章主要为大家详细介绍了如何用Python合并lmdb文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • windows+vscode安装paddleOCR运行环境的步骤

    windows+vscode安装paddleOCR运行环境的步骤

    这篇文章主要介绍了windows+vscode安装paddleOCR运行环境,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python Tornado框架轻松写一个Web应用的全过程

    Python Tornado框架轻松写一个Web应用的全过程

    Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的服务器方式,这篇文章主要给大家介绍了关于Python Tornado框架轻松写一个Web应用的相关资料,需要的朋友可以参考下
    2021-08-08

最新评论