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など異なるフォーマットでの出力にも対応できるのが魅力です。画像処理アプリケーションを開発する際に、ぜひ活用してみてください。
-
C++とOpenCVで画像のチャンネル数を取得する方法を解説
この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下
-
C++とOpenCVで画像を読み込んで表示する方法を徹底解説
この記事では、C++でOpenCVを使用して画像を読み込み、表示する方法について詳しく解説します。OpenCVで画像の読み込みや表示を行うには、以下のような関数やデータ構造が必要になります。 画像処理に必要な基本要素 Mat(マトリクス) Matは関数ではなく、データ構造の一種である変数型です。C++におけるint型やchar型、string型のように、MatはOpenCV独自の変数型であり、画像を格納するための行列(マトリクス)データ構造を作成します。プログラム内で「Mat myImage;」と記述した場合、「myImage」という名前の行列変数を宣言していることになります。 name