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

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

この記事では、C++でOpenCVを使用して画像を読み込み、表示する方法について詳しく解説します。OpenCVで画像の読み込みや表示を行うには、以下のような関数やデータ構造が必要になります。

画像処理に必要な基本要素

Mat(マトリクス)

Matは関数ではなく、データ構造の一種である変数型です。C++におけるint型やchar型、string型のように、MatはOpenCV独自の変数型であり、画像を格納するための行列(マトリクス)データ構造を作成します。プログラム内で「Mat myImage;」と記述した場合、「myImage」という名前の行列変数を宣言していることになります。

namedWindow()

namedWindow()はメモリを確保し、画像を表示するためのウィンドウを作成する関数です。イメージとしては写真立て(フォトフレーム)のような役割を果たします。OpenCVでは「namedWindow("ウィンドウ名", フラグ)」という形式で使用します。

imread()

imread()は、指定された場所から画像ファイルを読み込む関数です。サンプルプログラムではCドライブから画像を読み込んでいます。この関数は「imread("画像の場所/拡張子付きの画像ファイル名", フラグ)」という形式で記述します。

imshow()

imshow()は、指定したウィンドウに画像を表示する関数です。「imshow(ウィンドウ名, 行列変数名)」という形式で使用します。

waitKey()

waitKey()はOpenCVにおいて非常に重要な関数です。画像を処理し操作を実行するためには、システムにある程度の時間を与える必要があります。この時間を確保しないと、期待通りの結果が得られません。

この関数は一定期間待機してからプログラムを終了させます。例えばwaitKey(10000)と書けば10秒後にプログラムが終了します。また、waitKey(0)と記述すると、ユーザーがキーを押すまで無期限に待機します。ユーザーがキーボードの任意のキーを押すとプログラムが停止します。この関数は「waitKey(ミリ秒)」という形式で記述します。

destroyWindow()

destroyWindow()は、すべてのウィンドウを閉じる関数です。ウィンドウを作成する際にはメモリを確保していますが、この関数を使うことでそのメモリをシステムに解放できます。

サンプルコード

以下のプログラムは、OpenCVライブラリを使用して画像を読み込み、表示する方法を示しています。

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
    Mat myImage;// myImageという名前の行列を宣言//
    namedWindow("PhotoFrame");// 画像を表示するウィンドウを宣言//
    myImage = imread("lakshmi.jpg");// lakshmi.jpgという画像を行列に読み込む//
    if (myImage.empty()) {// 画像が読み込めなかった場合はエラーメッセージを表示//
        cout << "Couldn't load the image." << endl;
        system("pause");// システムを一時停止し、キー入力を待つ//
        return-1;
    }
    imshow("PhotoFrame", myImage);// 'myImage'に格納された画像を"PhotoFrame"ウィンドウに表示//
    destroyWindow("Photoframe");// ウィンドウを閉じてメモリを解放//
    waitKey(0);// ユーザーがキーを押すまで待機
    return 0;
}

実行結果

上記のプログラムを実行すると、指定した画像が「PhotoFrame」という名前のウィンドウ内に表示されます。画像ファイルが存在しない場合や読み込みに失敗した場合は、エラーメッセージが出力され、プログラムは-1を返して終了します。

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

このように、OpenCVを使えばわずか数行のコードで画像の読み込みから表示までを簡単に実装できます。各関数の役割を理解しておくことで、より複雑な画像処理プログラムへの応用もスムーズに行えるでしょう。

  1. Kerasを使って画像を読み込み・表示する方法をわかりやすく解説

    Kerasを使用して画像を読み込み、画面に表示するには、load_img() メソッドで画像ファイルを読み込み、その際に表示したい画像のターゲットサイズ(target_size)を指定します。読み込まれた画像はPIL形式のオブジェクトとして扱われるため、show() メソッドを呼び出すだけで簡単に表示できます。手順load_img() メソッドを使って画像ファイルを読み込みます。引数 target_size に(幅, 高さ)のタプル形式で、希望する画像サイズを設定します。画像を表示するには、show() メソッドを呼び出します。サンプルコードfrom keras.preprocessing i

  2. OpenCVのcircle()関数を使って画像に円を描画する方法

    はじめに本記事では、OpenCVが提供するcircle()関数を使用して、画像上に円を描画する方法を解説します。円の中心座標・半径・色・線の太さを自由に指定できるため、画像への注釈付けや図形のオーバーレイ表示など、さまざまな場面で活用できます。元画像処理の手順(アルゴリズム)ステップ1:OpenCVをインポートする ステップ2:円の半径を定義する ステップ3:円の中心座標を定義する ステップ4:円の色を定義する ステップ5:線の太さを定義する ステップ6:上記の引数を画像とともにcv2.circle()へ渡す ステップ7:出力結果を表示するcv2.circle()の主な引数image:描画対象