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/zh-hk/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

發表回復

登錄後才能評論