关于opencv无损保存图片的说明

cv2.imwrite()函数用于在OpenCV中保存图像,支持无损压缩格式如.png和有损压缩如.jpg。无损压缩保留原始数据,而有损压缩牺牲质量换取更小的文件大小。用户可以通过调整参数如cv2.CV_IMWRITE_JPEG_QUALITY和cv2.CV_IMWRITE_PNG_COMPRESSION来控制压缩程度和质量。保存成功时,函数返回True。
摘要由CSDN通过智能技术生成

结论:

选择无损压缩格式(如.png)就能无损保存图片,可选压缩程度

选择有损压缩格式(如.jpg)只能有损保存图片,可选损失程度

opencv使用函数 cv2.imwrite() 用于将图像保存到指定的文件

函数说明:

retval = cv2.imwrite(filename, img [, paras])
  • cv2.imwrite() 将 OpenCV 图像保存到指定的文件。

  • cv2.imwrite() 基于保存文件的扩展名选择保存图像的格式。

  • 只需填入filename, img这两个参数信息就行,后面的为默认参数。

参数说明:

  • filename:要保存的文件的路径和名称,包括文件扩展名

  • img:要保存的 OpenCV 图像,nparray 多维数组

  • paras:不同编码格式的参数,可选项:

  • cv2.CV_IMWRITE_JPEG_QUALITY:设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95),数值越大则图片质量越高;

  • cv2.CV_IMWRITE_PNG_COMPRESSION:设置 .png 格式图片的压缩比,取值为 0-9(默认值 3),数值越大则无损压缩比越大,0表示不压缩直接储存。默认值为1(最佳速度设置)

  • 等等

  • retval:返回值,保存成功返回 True,否则返回 False。

OpenCV库中,我们可以利用`imwrite()`函数将图像数据保存到本地文件系统上。以下是一个简单的示例,展示了如何使用此功能: ```cpp #include <opencv2/opencv.hpp> int main() { // 加载图像(此处假设我们有一个名为image.jpg的图像) cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); if (image.empty()) { std::cout << "无法加载图像" << std::endl; return -1; } // 确定要保存图片的路径 std::string filename = "output_image.jpg"; // 使用imwrite函数将图像保存到本地文件 bool success = cv::imwrite(filename, image); if (success) { std::cout << "图像已成功保存到:" << filename << std::endl; } else { std::cout << "保存图像失败" << std::endl; } return 0; } ``` ### 相关问题: 1. **如果我想在保存之前对图像进行处理(例如缩放、旋转等),应该怎么做?** 可以在保存之前对图像应用各种变换,如使用 `cv::resize()` 进行缩放,`cv::rotate()` 进行旋转等。 2. **如何指定保存图片的质量?** OpenCV默认使用无损JPEG压缩。如果你需要调整质量(从低到高,值越大质量越高),可以使用额外的参数,例如通过设置“quality”选项。 3. **在多线程环境中,如何安全地使用imwrite来避免文件操作冲突?** 当在多线程环境中有多个线程试图同时写入相同的文件时,应使用适当的同步机制(如互斥锁)来防止并发写入导致的数据损坏。这通常涉及到保护共享资源的临界区域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值