C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でOpenCVの画像を保存する方法|imwrite()関数の使い方を解説

C++とOpenCVで画像をファイルに保存する基本

本記事では、OpenCVで扱った画像をコンピュータ上の任意の場所に保存する方法を解説します。OpenCVでは、imwrite()関数を使用することで、画像を指定したファイルへ簡単に書き出せます。保存時のファイル拡張子が、そのまま画像フォーマット(JPEG・PNGなど)として認識される仕組みです。

imwrite()関数の基本構文

imwrite("保存先/拡張子を含めた画像名", 元となる行列)

第1引数には画像の保存先パスとファイル名を、第2引数には画像データが格納されたMat型の行列を指定します。

各パラメータの意味

  • 保存先: 画像を保存したい場所とファイル名です。サンプルプログラムでは「lakshmi.jpg」という名前で保存していますが、任意の名前を付けることができます。
  • 元となる行列: 読み込んだ画像が保持されているMat型の変数です。このプログラムでは「myImage」という行列に画像を読み込んでいます。

サンプルコード

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

int main(int argc,const char** argv) {
    Mat myImage;//myImageという名前の行列を宣言//
    myImage = imread("lena.png");//「lena」という名前の画像を行列に読み込む//
    imwrite("lakshmi.jpg", myImage);//画像を「lakshmi.jpg」として保存//
    waitKey(0);//ユーザーが何かキーを押すまで待機//
    destroyWindow("MyWindow");//ウィンドウを閉じて確保したメモリを解放//
    cout << "画像は正常に保存されました……";
    return 0;
}

実行結果

画像は正常に保存されました……

まとめ

imwrite()関数を使えば、OpenCVで読み込んだ画像をわずか1行のコードで保存できます。拡張子を変更するだけで、JPEGやPNGなど異なるフォーマットでの出力にも対応できるのが魅力です。画像処理アプリケーションを開発する際に、ぜひ活用してみてください。

  1. C++とOpenCVで画像のチャンネル数を取得する方法を解説

    この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下

  2. C++とOpenCVで画像を読み込んで表示する方法を徹底解説

    この記事では、C++でOpenCVを使用して画像を読み込み、表示する方法について詳しく解説します。OpenCVで画像の読み込みや表示を行うには、以下のような関数やデータ構造が必要になります。 画像処理に必要な基本要素 Mat(マトリクス) Matは関数ではなく、データ構造の一種である変数型です。C++におけるint型やchar型、string型のように、MatはOpenCV独自の変数型であり、画像を格納するための行列(マトリクス)データ構造を作成します。プログラム内で「Mat myImage;」と記述した場合、「myImage」という名前の行列変数を宣言していることになります。 name