趣味は車輪の再発明♪

cvImagePipeline::Filter::ImageProcessor - 画像処理プロセッサの抽象基底クラス


詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski Adrian Kaehler
オライリージャパン
売り上げランキング: 25,746


■ たかみんつ / ソフト開発メモINDEX / cvImagePipeline - OpenCV画像処理フィルタシーケンスライブラリ /


概要

ImageProcessorクラスは、画像処理プロセッサの基底クラスです。

  • ひとつの出力画像(const cv::Mat&)を提供します。
  • 複数の入力画像(const cv::Mat&)を参照します。
  • 複数のプロパティを保持できます。処理のパラメータとして使用できます。
  • 出力画像は複数のプロセッサから参照可能です。
  • 入力画像とプロパティには名前によるアクセスが可能。

実装方法

以下に実装方法を記述しますが、詳細は、各クラスのソースファイルを参照してください。

クラス名による実行時動的インスタンス生成

画像処理プロセッサは、そのクラス名によるインスタンス化(名前による生成)が可能です。

名前による生成は、

  • XMLファイルから画像処理プロセッサを構築する場合は必須条件。
  • 実装済みの全プロセッサーは対応しています。
  • ユーザーが拡張する画像処理プロセッサも対応可能。

名前による生成に対応させるには、以下2つのマクロを使用してクラスを実装します。

DECLARE_CVFILTERマクロ
クラス宣言のpublicメンバーとして記述します。引数はありません。

IMPLEMENT_CVFILTERマクロ
クラスの実装ファイルに記述します。引数はクラス名そのものです。

プロパティを定義する

画像処理プロセッサは、複数のプロパティを保持できます。 プロパティは cvImagePipeline::Filter::Property の派生クラスです。 このクラスから派生したプリミティブ型の値を持つテンプレートクラス cvImagePipeline::Filter::TParam型を使用できます。

クラスがプロパティを保持するには以下のようにクラスを記述します。

  • クラスのパブリックメンバとして、プロパティを宣言します。
  • コンストラクタの初期化ブロックで、その名前と初期値で初期化します。名前はメンバ名と同じにしておきます。
  • コンストラクタでdefParamメソッドをプロパティを指定して呼び出します。

入力画像の定義

画像処理プロセッサは初期状態でひとつの名前の無い入力画像を保持しています。

コンストラクタ内で、defInputMat メソッドを使用すれば、新たな名前つきの入力画像を定義できます。

名前の無い入力画像や、基本クラスで定義された入力画像を削除したい場合は、undefInputMatを使用します。

画像処理の記述

画像処理は、派生クラスで純粋仮想関数のexecute()を実装します。

execute()では、入力画像を画像処理して、出力画像へ書き込みます。

  • 入力画像の参照は、getInputMat()で行えます。
  • 書き換え可能な出力画像を参照するには、refOutputMat()を使用します。

リンク


[cvImagePipeline - OpenCV画像処理フィルタシーケンスライブラリ]へ戻る


Pythonプロフェッショナルプログラミング 第2版
秀和システム (2015-05-21)
売り上げランキング: 1,813


クラウドではじめる機械学習 Azure MLでらくらく体験
脇森浩志 杉山雅和 羽生貴史
リックテレコム
売り上げランキング: 2,081

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 40,213

■ たかみんつ / ソフト開発メモINDEX / cvImagePipeline - OpenCV画像処理フィルタシーケンスライブラリ /



RSS Feed Widget
cvImagePipeline::Filter::ImageProcessor - 画像処理プロセッサの抽象基底クラス
(http://bicycle.life.coocan.jp/takamints/index.php/doc/cvImagePipeline/ImageProcessor)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )