OpenCV保存图片到指定路径

一、背景介绍

OpenCV是一款开源的计算机视觉库,可以用于图像和视频处理。在实际工作中,我们经常需要对处理完的图像进行保存,而保存的方式和路径也是多样的。本文将围绕这一主题,详细介绍如何使用OpenCV将图像保存到指定路径。

二、保存图片到指定路径的C语言代码

前置知识:在OpenCV中,使用cvSaveImage函数将图像保存到文件中。该函数的原型如下所示:

int cvSaveImage(const char* filename, const CvArr* image, const int* params=0)

其中,filename是要保存的文件名,image是图像数据,params是存储时要使用的参数,可以不填。函数返回值表示保存结果,0表示失败,大于0表示成功。

下面是将图像保存到指定路径的C语言代码:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    if (argc != 3) {
        cout << "Usage: SaveImage image_path save_path" << endl;
        return -1;
    }
    const char *image_path = argv[1];
    const char *save_path = argv[2];
    IplImage* img = cvLoadImage(image_path);
    if (!img) {
        cout << "Fail to load image from " << image_path << endl;
        return -2;
    }
    if (!cvSaveImage(save_path, img)) {
        cout << "Fail to save image to " << save_path << endl;
        return -3;
    }
    cvReleaseImage(&img);
    cout << "Image has been saved to " << save_path << endl;
    return 0;
}

该代码通过命令行参数传入了原图路径和保存路径,加载原图后使用cvSaveImage函数保存到指定路径中。注意,函数返回值为0表示保存失败。

三、在图像中添加文字并进行保存

如果需要在图片中添加一些文字说明,我们可以使用OpenCV提供的绘图函数。下面是一个例子,将一些文本添加到图像中,并进行保存:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    if (argc != 3) {
        cout << "Usage: AddText image_path save_path" << endl;
        return -1;
    }
    const char *image_path = argv[1];
    const char *save_path = argv[2];
    IplImage* img = cvLoadImage(image_path);
    if (!img) {
        cout << "Fail to load image from " << image_path << endl;
        return -2;
    }
    CvFont font;
    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA);
    cvPutText(img, "Hello, OpenCV!", cvPoint(20, 50), &font, cvScalar(0, 255, 0));
    if (!cvSaveImage(save_path, img)) {
        cout << "Fail to save image to " << save_path << endl;
        return -3;
    }
    cvReleaseImage(&img);
    cout << "Image has been saved to " << save_path << endl;
    return 0;
}

该代码使用cvPutText函数将文本添加到图像中,具体用法可参考OpenCV官方文档。如果需要更改文本样式,可以通过CvFont结构体进行设置。

四、图片质量设置及参数说明

在使用OpenCV保存图像时,可以通过参数来设置图片的压缩格式、保存质量等参数。下面是各个参数的说明:

  • filename:要保存的文件名。
  • image:图像数据。
  • params:存储时要使用的参数,可以为NULL。

params的取值可以为以下几种:

  • NULL:使用默认值,即图片质量为95。
  • int数组:数组长度为1,表示图片质量,取值为0~100。0表示最小尺寸和最大压缩,100表示最大尺寸和最小压缩。
  • CV_IMWRITE_JPEG_QUALITY:数组长度为1,表示jpeg图像质量,取值为0~100,0表示最小质量,100表示最大质量。
  • CV_IMWRITE_PNG_COMPRESSION:数组长度为1,表示png图像压缩比,取值为0~9,0表示最小压缩,9表示最大压缩。
  • CV_IMWRITE_PXM_BINARY:数组长度为1,表示pbm、pgm、ppm图像格式。0表示ascii格式,1表示二进制格式。
  • CV_IMWRITE_WEBP_QUALITY:数组长度为1,表示webp图像质量,取值为0~100,0表示最小质量,100表示最大质量。
  • CV_IMWRITE_WEBP_COMPRESSION:数组长度为1,表示webp图像压缩比,取值为0~100,0表示最小压缩,100表示最大压缩。
  • CV_IMWRITE_TIFF_COMPRESSION:数组长度为1,表示tiff图像压缩方式,取值为0~9,0表示不压缩,1表示LZW压缩,2表示JPEG压缩,其他值表示zip压缩。

下面是一个例子,将图像保存为jpeg格式,质量为70:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    if (argc != 3) {
        cout << "Usage: SaveImage image_path save_path" << endl;
        return -1;
    }
    const char *image_path = argv[1];
    const char *save_path = argv[2];
    IplImage* img = cvLoadImage(image_path);
    if (!img) {
        cout << "Fail to load image from " << image_path << endl;
        return -2;
    }
    int params[3] = {CV_IMWRITE_JPEG_QUALITY, 70, 0};
    if (!cvSaveImage(save_path, img, params)) {
        cout << "Fail to save image to " << save_path << endl;
        return -3;
    }
    cvReleaseImage(&img);
    cout << "Image has been saved to " << save_path << endl;
    return 0;
}

五、总结

本文详细介绍了使用OpenCV保存图片到指定路径的方法,并给出了相应的C语言代码示例。同时,还讲解了如何在图片中添加文字以及图片保存质量的设置和参数说明。希望本文对读者在实际工作中处理图像有所帮助。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/300583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-29 12:52
下一篇 2024-12-29 12:52

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • 如何在PyCharm中安装OpenCV?

    本文将从以下几个方面详细介绍如何在PyCharm中安装OpenCV。 一、安装Python 在安装OpenCV之前,请确保已经安装了Python。 如果您还没有安装Python,可…

    编程 2025-04-29
  • 用Python绘制酷炫图片

    在本篇文章中,我们将展示如何使用Python绘制酷炫的图片。 一、安装Python绘图库 在使用Python绘制图片之前,我们需要先安装Python绘图库。Python有很多绘图库…

    编程 2025-04-29
  • Python OpenCV 直线检测

    本文将介绍在Python OpenCV中进行直线检测的方法,主要涉及到图像的边缘检测、霍夫变换和绘制直线等操作。 一、边缘检测 由于直线检测是从图像的边缘开始的,因此必须先找到图像…

    编程 2025-04-29
  • 使用axios获取返回图片

    使用axios获取返回图片是Web开发中很常见的需求。本文将介绍如何使用axios获取返回图片,并从多个方面进行详细阐述。 一、安装axios 使用axios获取返回图片前,首先需…

    编程 2025-04-29
  • Python 图片转表格

    本文将详细介绍如何使用Python将图片转为表格。大家平时在处理一些资料的时候难免会遇到图片转表格的需求。比如从PDF文档中提取表格等场景。当然,这个功能也可以通过手动复制、粘贴,…

    编程 2025-04-29
  • Python缓存图片的处理方式

    本文将从多个方面详细阐述Python缓存图片的处理方式,包括缓存原理、缓存框架、缓存策略、缓存更新和缓存清除等方面。 一、缓存原理 缓存是一种提高应用程序性能的技术,在网络应用中流…

    编程 2025-04-29
  • Python如何抓取图片数据

    Python是一门强大的编程语言,能够轻松地进行各种数据抓取与处理。抓取图片数据是一个非常常见的需求。在这篇文章中,我们将从多个方面介绍Python如何抓取图片数据。 一、使用ur…

    编程 2025-04-29
  • Python文件路径赋值

    Python中文件操作是非常基本的操作,而文件路径是文件操作的前提。本文将从多个方面阐述如何在Python中赋值文件路径。 一、绝对路径和相对路径 在Python中,路径可以分为绝…

    编程 2025-04-28
  • Python利用Image加图片的方法

    在Python中,利用Image库可以快速处理图片,并加入需要的图片,本文将从多个方面详细阐述这个操作。 一、Image库的安装和基础操作 首先,我们需要在Python中安装Ima…

    编程 2025-04-28

发表回复

登录后才能评论