画像配列(イメージアレイ)とは?OpenCVとC++のサンプルコードでわかりやすく解説
配列(アレイ)とは、複数のデータをまとめて効率的に格納し、取り出すための便利な仕組みです。OpenCVでは、この配列の概念を活用することで、複数の画像をひとつの「画像配列」に読み込み、インデックス番号を指定するだけで目的の画像を表示できます。
本記事では、Mat型の行列配列に複数の画像を読み込み、インデックス番号を使って各画像を表示するC++のサンプルプログラムを紹介します。
画像配列の基本的な考え方
通常、1枚の画像を読み込む場合はMatオブジェクトを1つ宣言すれば十分ですが、複数の画像を扱いたい場合には、Mat型の配列を宣言することで管理が簡単になります。配列の各要素にはimread()関数で読み込んだ画像が格納され、imshow()関数にインデックス番号を渡すことで任意の画像を表示できます。
サンプルコード
以下のプログラムは、3つの画像を行列配列に読み込み、それぞれ別のウィンドウに表示します。
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main(int argc,const char** argv) {
Mat myImage_array[3];// Mat型の画像配列を宣言 //
namedWindow("PhotoFrame1");// 画像を表示するためのウィンドウを宣言 //
namedWindow("PhotoFrame2");// 画像を表示するためのウィンドウを宣言 //
namedWindow("PhotoFrame3");// 画像を表示するためのウィンドウを宣言 //
myImage_array[0] = imread("cat.jpg");// 配列の0番目に画像「cat.jpg」を読み込む //
myImage_array[1] = imread("cat.jpg");// 配列の1番目に画像「cat.jpg」を読み込む //
myImage_array[2] = imread("cat.jpg");// 配列の2番目に画像「cat.jpg」を読み込む //
imshow("PhotoFrame1", myImage_array[0]);// 配列の0番目の画像を「PhotoFrame1」ウィンドウに表示 //
imshow("PhotoFrame2", myImage_array[1]);// 配列の1番目の画像を「PhotoFrame2」ウィンドウに表示 //
imshow("PhotoFrame3", myImage_array[2]);// 配列の2番目の画像を「PhotoFrame3」ウィンドウに表示 //
waitKey(0);// ユーザーが何かキーを押すまで待機 //
return 0;
}
コードの解説
このプログラムの処理の流れは以下の通りです。
1. 画像配列の宣言:Mat myImage_array[3]により、Mat型の配列を3つ分確保します。これで3枚の画像を格納できるようになります。
2. ウィンドウの作成:namedWindow()関数を使って、画像を表示するためのウィンドウを3つ作成します。ここでは「PhotoFrame1」「PhotoFrame2」「PhotoFrame3」という名前を付けています。
3. 画像の読み込み:imread()関数で画像ファイル「cat.jpg」を読み込み、配列の各要素(インデックス0〜2)に代入します。実際の開発では、異なる画像ファイルを指定して使うことが一般的です。
4. 画像の表示:imshow()関数にウィンドウ名と配列のインデックス番号を指定して呼び出すことで、対応する画像がそれぞれのウィンドウに表示されます。
5. キー入力の待機:waitKey(0)により、ユーザーがキーを押すまでプログラムは終了せず、画面上に画像が表示され続けます。
実行結果
プログラムを実行すると、3つのウィンドウが開き、それぞれのウィンドウに配列から取り出された画像が表示されます。

まとめ
画像配列を使えば、複数の画像を個別の変数として扱うことなく、インデックス番号による統一的な管理が可能になります。ループ処理と組み合わせれば、大量の画像を効率よく読み込み・表示・加工することもできるため、画像処理アプリケーション開発において非常に有用なテクニックです。
-
JavaScriptのsplice()メソッドとは?配列の要素追加・削除を実例コードで解説
JavaScriptにおける配列のスプライシング(splice)とは 配列の「スプライシング」とは、Array.splice()メソッドを使用して、配列に要素を追加したり、配列から要素を削除したりすることを指します。このメソッドは元の配列を直接変更し、削除された要素は新しい配列として返されます。何も削除されなかった場合は空の配列が返ります。 splice()メソッドの基本構文 array.splice(start, deleteCount, item1, item2, ...) start:変更を開始する位置(インデックス番号)。負の値を指定すると配列の末尾から数えた位置になります。 de
-
C++で学ぶ式ツリー(Expression Tree)の基本と具体例
式ツリーとは何か式ツリー(Expression Tree)とは、二分木の一種であり、木の各ノードが「演算子」または「オペランド(被演算子)」のいずれかで構成される特殊なデータ構造です。数式を木構造として表現することで、コンパイラや電卓アプリなどが数式を効率的に解析・評価できるようになります。ノードの役割式ツリーにおける各ノードは、次のように役割が分かれています。葉ノード(リーフノード):オペランド(数値や変数)を表します。非葉ノード(内部ノード):演算子(+、-、*、/ など)を表します。つまり、計算の対象となる値は必ず葉に配置され、それらをどのように処理するかを示す演算子が親ノードとして上に