| Easy Stereo Processing LIBrary ESPLIB 8.7 "esplib.h" by I.N. 2022/1/4 |
目次
1.はじめに
2.特長
3.動作環境
4.インストール方法
5.アンインストール方法
6.使用手順
7.全般的な説明
8.メインウィンドウ
9.イメージウィンドウ
10.テキストウィンドウ
11.インプットボックス
12.ボタンボックス
13.ウィンドウの配置を視覚的に行うには
14.実行ファイルを他の動作環境で実行する
15.ESPLIBをライブラリモードで使用する
16〜29 サンプルプログラム
30〜41 関数リファレンス
42 バージョンアップ履歴
43〜46 著作権・使用許諾,作者への連絡先 等
はじめに
特長
動作環境
インストール方法
アンインストール方法
使用手順
Visual C++ をよく知らない人への注意事項
次回からはVisual C++ を起動した後,「ファイル」→「開く」→「プロジェクト/ソリューション」で test.sln (←例)を指定するだけで,前回の作業の続きを行うことができます.
test.cpp (←例)という名前でソースファイルを作成した場合,勝手に test2.cpp(←例)などと名前だけを変更することはできません.test.cpp (←例)の内容は修正してもよいが,ファイル名は最後まで変更せずにプログラム作成を行ってください.
新規にプログラムを作る場合は,プロジェクトの新規作成[手順(2)]から行ってください.
プログラムを実行したあとは,実行中のプログラムを必ず終了させてください.終了させずにプログラムを修正し,ビルドや実行をすることはできません.
全般的な説明
関数リファレンス:全体に関するもの
最低限 ESP_Ready(), ESP_Main(), ESP_Finish() の3つの関数が必要です.(ただし,通常のアプリケーションモードの場合).これらの関数の内容は空でも結構です.これは,最も単純なプログラムの例です.ライブラリモードではこれらの3つの関数は不要です.ライブラリモードの説明は,こちらにあります.
プログラムが実行された時点で,ESP_Ready() が自動的に呼び出されます.さらに Start メニュー(またはSキー)を押すと,ESP_Main() が実行されます.
プログラムを終了するには Exitメニュー(または Xキー,ESCキー)を押します.ESPLIB は終了する前に ESP_Finish() を呼び出します.この終了操作が行われると,ESP_Ready(), ESP_Main(), ESP_Finish() 等においてプログラムが無限ループに陥った状態であったとしても,2秒後には強制終了します.
ESPLIBのすべてのウィンドウにおいて,Ctrlキーを押しながらウィンドウを動かすと,近くのウィンドウに吸い付く機能が働きます.
ESPLIBのすべてのウィンドウにおいて,Altキーを押しながらウィンドウを動かすと,他のウィンドウも同時に移動します.
ESCキー,Xキー,Sキー,Cキーの操作はインプットボックスがアクティブ(最前面)状態のときは無効です.
メインウィンドウ
Start メニュー(または Sキー)を押すと,ESP_Main() が実行されます.
Stop メニュー(Cキーも含む)を使用可能とするには,プログラム中で ESP_STOP に関する記述が必要です.
Exit メニュー(または Xキー,ESCキー)を押すと ESPLIB は終了します.ESPLIB は終了する前に ESP_Finish() を呼び出します.この終了操作が行われると,ESP_Ready(), ESP_Main(), ESP_Finish() 等においてプログラムが無限ループに陥った状態であったとしても,2秒後には強制終了します.
ESPLIB起動時にメインウィンドウが出現されないようにすることもできます.方法は,下の例のようにesplib.hのインクルードより前に,ESP_HIDE_MAINWINDOWを定義してください.ただし,メインウィンドウを通した操作は使えなくなります.また,ESPLIBを簡単に終了させられなくなる原因になり得るので注意してください.もし,他のすべてのウィンドウも閉じてしまってExitやESC,
Xキーによる終了ができなくなった場合は,タスクマネージャーを起動させて実行中のプログラムを終了させてください.
ESPLIB起動時にメインウィンドウが落下しながら登場するアニメーションを飛ばして,直ちにメインウィンドウを表示させることができます.方法は,下の例のようにesplib.hのインクルードより前に, ESP_SKIPANIMATIONを定義してください.
通常,メインウィンドウ上には現在のパレットモードが表示されています.マウスのクリックが要求されている場合には,このウィンドウにその旨のメッセージが表示されるので,イメージウィンドウに対してクリック操作を行ってください.このとき,左クリックは座標の指定,右クリックはキャンセルの働きをします.また,文字入力が要求されている場合もその旨のメッセージがここに表示されます.
メインウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニューが現れます.このポップアップメニューの説明.
| Paste クリップボードにビットマップ画像があれば,その画像と同じサイズのイメージウィンドウを新規作成し,その画像を表示します. Start ESP_Main() 関数を実行します. Stop 変数 ESP_STOP の値を 1 にセットします.この変数を使用したプログラムはユーザ側で作成してください. Exit ESPLIB を終了させます. Image Window 新規にイメージウィンドウを開きます.横および縦のサイズ,ビット数を聞いてくるので入力してください. Text Window 新規にテキストウィンドウを開きます. Input Box インプットボックスを開きます.項目の数を聞いてくるので入力してください.すでに古いインプットボックスが開かれている場合,新しいインプットボックスに置き換えられます. Button Box ボタンボックスを開きます.ボタンの横数および縦数を聞いてくるので入力してください.すでに古いボタンボックスが開かれている場合,新しいボタンボックスに置き換えられます. Window Info. ESPLIB における(インプットボックスやボタンボックスも含む)各ウィンドウの情報をテキストウィンドウに表示します.そして,現在のウィンドウ配置を出現させるためのレイアウト作成ソースリストをクリップボードに保存します.保存されたソースリストはテキストエディタ上で「貼り付け/ペースト」を行えば利用できます.メインウィンドウについては,標準位置から変更されている場合にのみ,その位置が表示されます.参考:「ウィンドウの配置を視覚的に行うには」 |
メインウィンドウへ画像ファイルをドラッグ&ドロップすることにより,イメージウィンドウを生成して画像を表示することができます.複数ファイルのドラッグ&ドロップにも対応しています.
イメージウィンドウ
関数リファレンス:
イメージウィンドウ関連,
グラフィックス描画関連,
テキスト描画,
画像ファイル関連,
色変換,
文字コード変換
イメージウィンドウは,点や線,文字などのグラフィックスを描画するためのウィンドウです.イメージウィンドウには32ビットモードと8ビットモードの2種類があります.現在のパレットモードに関係なくESPLIB の内部では32ビットあるいは8ビットで画像の記憶や処理が行われます.
8ビットモードのイメージウィンドウではウィンドウタイトルの一部に"[8bit]"と表示されます.
一連の描画関数を実行した後は,ESP_Update()等でウィンドウ内容を更新して下さい.この更新が行われない限り,イメージウィンドウは古い内容のままです.
イメージウィンドウは複数(最大256個)開くことができます.描画,点情報の読み取り,更新などはESP_Select()等によって現在選択されているウィンドウに対して行われます.
表示倍率が100%のとき,最も高速に画面更新が行われます.現在の表示倍率はタイトルの末尾に表示されます.
タイトル表示の末尾に "*" 印があるとき,表示方法がHALFTONE状態であることを示します.イメージウィンドウがアクティブのときに
TABキーを押すことによって表示方法を手動で切り替えることが可能です.詳しくはESP_SetDisplayMode()を参照してください.
イメージウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニュー(1) が現れます.ポップアップメニュー(1)の説明.
| Cut イメージウィンドウの画像をビットマップとしてクリップボードへ切り取ります.ショートカットキーは CTRL+X です. Copy イメージウィンドウの画像をビットマップとしてクリップボードへコピーします.ショートカットキーは CTRL+C です. Paste クリップボードにビットマップ画像があれば,そのイメージウィンドウへ貼り付けます.画像サイズは自動調整されません.貼り付ける中心位置をマウスで指定します.ショートカットキーは CTRL+V です.ただし,キー操作の場合,貼り付け位置は指定できません. Load image file 画像ファイルを指定するためのコモンダイアログボックスを開き,その画像を読み込んで表示します.各種の画像形式を読み込むことができます. Save as そのイメージウィンドウの画像をファイルとして保存します.ファイル名を入力するためのコモンダイアログボックスが開くので入力してください.保存形式はBMP,JPEG,GIF,PNG,TIFFから選択します.JPEG形式で保存するときの画質は100[%]に固定されています. Zoom:50% Zoom:100% Zoom:200% 表示倍率を規定の値に変更します.ただし,画面解像度の上限のため,指定した表示倍率にならない場合があります.100%にするときのショートカットキーは CTRL+0(テンキーのゼロ)です. Zoom... 表示倍率を入力した値に変更します.テキストウィンドウが開くので値を入力してください.ただし,画面解像度の上限のため,指定した表示倍率にならない場合があります. Resize イメージウィンドウの画像サイズを変更します.横および縦のサイズを聞いてくるのでピクセル単位で入力してください. Destroy そのイメージウィンドウを消滅させます.ショートカットキーは CTRL+Q です. |
イメージウィンドウ上で Ctrlキー+マウス右ボタン(またはマウス中ボタン)を押すと下のようなポップアップメニュー(2) 現れます.ポップアップメニュー(2)の説明.
| Process... 画像処理のサブメニューが開きます. Invert…ネガ/ポジ反転 R. Rotate…右回転 L. Rotate…左回転 Horz. Flip…左右反転 Vert. Flip…上下反転 Size xxx%…拡大または縮小 (そのイメージウィンドウの表示方法がHALFTONEかCOLORONCOLORかによって処理結果が異なります) Information... 画像情報の取得に関するサブメニューが開きます.イメージウィンドウの種類が32ビットモードか8ビットモードかにより表示されるサブメニューは異なります. ・32ビットモード Pixel 点の情報(座標および色)を表示します.1点を指定してください. Line(RGB)/Line(HSV)/Line(YCrCb) 水平線の色情報を RGB/HSV/YCrCb成分に分けて断面表示します.水平ラインを指定してください. Line(CrCb) 水平線の色情報を CrCb平面で表示します.水平ラインを指定してください. Area(CrCb) 領域の色情報を CrCb平面で表示します.矩形領域を指定してください. ・8ビットモード Pixel 点の情報(座標および輝度)を表示します.1点を指定してください. Line(Lumi) 水平線の輝度情報を断面表示します.水平ラインを指定してください. Test Pattern... テストパターン描画のサブメニューが開きます.RGBやHSVなど各種のテストパターンを描画します.8ビットモードのイメージウィンドウにおいてGreyを選択するとそのウィンドウのカラーテーブルは強制的にグレースケールに設定されます. Clipping イメージウィンドウの一部分をクリッピングし,その内容を持つイメージウィンドウを新たに開きます.ショートカットキーは CTRL+R です. Color... Change 描画色を変更します.色を指定するためのダイアログボックスが開きます. Pick 描画色を画像より取得します.イメージウィンドウ内において1点を指定してください. Draw Line... 直線描画のサブメニューが開きます.各種直線が描画できます. Draw Box... ボックス(箱)描画のサブメニューが開きます.各種ボックスが描画できます. Draw Circle... 円描画のサブメニューが開きます.各種円が描画できます. TrueType... Draw TrueTypeフォントでテキストを描画します.最初の文字を描画する範囲を指定してください.ここで指定する大きさは全角文字のときの大きさです.半角文字の幅は,ここで指定した幅の半分の大きさになります.その後,文字列を聞いてくるので入力してください. Font Change 描画フォントを変更します.ダイアログボックスが開くのでフォントを選択してください. Draw Text ESPLIB が提供するドットフォントでテキストを描画します.描画開始点(左下)を1点指定してください.また,文字列を聞いてくるので入力してください. Paint 塗りつぶしを実行します.開始点を1点指定してください. |
イメージウィンドウ上へ画像ファイルをドラッグ&ドロップすればそのファイルが表示されます.ただし,ウィンドウサイズは自動調整されません.
イメージウィンドウ上で Ctrlキーを押しながらホイールマウスのホイールを前後に動かすと,表示倍率(ズーム)のアップ/ダウンが行えます.また,CTRL+'+'(テンキーのプラス) および CTRL+'-'(テンキーのマイナス) でも表示倍率のアップ/ダウンが行えます.
テキストウィンドウ
関数リファレンス:
テキストウィンドウ関連,
テキスト入出力
テキストウィンドウは文字や数値の出力および入力を行うためのウィンドウです.
テキストウィンドウは複数(最大256個)開くことができます.テキストウィンドウが複数存在する場合,テキストの入出力は選択されているウィンドウに対して行われます.ウィンドウの選択にはESP_SelectTW()等を使います.
ESP_Printf()やESP_Puts()で文字出力ができますが,表示速度を上げるために,これらの関数ではウィンドウ内容は更新されません.更新するには,呼び出し毎に更新を行う関数ESP_PrintfU(),ESP_PutsU()を使うかESP_STOPによるStopメニューの確認を利用して内容を更新してください.
ESP_Input()によって文字入力ができます.このとき,カーソル上キーを押すと前回入力した文字列を呼び出すことができます.また,Ctrl+Vキーによってクリップボードのテキストを貼り付けることができます.
各ウィンドウ毎に文字色および背景色の設定ができます.
テキストウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニューが現れます.このポップアップメニューの説明.
| Select そのテキストウィンドウを選択状態に設定します.そのテキストウィンドウが選択状態にあるとき,このメニューの左橋にチェックマークが付きます. Window Info. ESPLIB における(インプットボックスやボタンボックスも含む)各ウィンドウの情報を表示します.そして,現在のウィンドウ位置を出現させるためのレイアウト作成ソースリストをクリップボードに保存します.保存されたソースリストはテキストエディタ上で「貼り付け/ペースト」を行えば利用できます.メインウィンドウについては,標準位置から変更されている場合にのみ,その位置が表示されます.参考:「ウィンドウの配置を視覚的に行うには」 Command コマンド入力モードになります.現在のところ,あまり大したコマンドはサポートされていません.help と入力すると,コマンドリストが表示されます.テキストウィンドウにおいて,入力状態でないときに SPACEキーを押してもこのモードになります. Start Log そのテキストウィンドウについて,ログ処理を開始します.ESP_StartLog() 等を参照してください. Stop Log そのテキストウィンドウについて,ログ処理を(一時)中断します.ESP_StopLog() 等を参照してください. Copy ESPLIBx.LOG そのテキストウィンドウについて,カレントディレクトリに存在するログファイルの内容をクリップボードにコピーします.ログ処理が開始されていなければ,ログファイルは存在しないため,このメニューは使えません.ただし,前回のログファイルが残っていればその内容がコピーされます. About ESPLIB ESPLIB のバージョン情報を表示します. Destroy そのテキストウィンドウを消滅させます. |
テキストウィンドウはマウス操作により半角文字の刻み幅でサイズ変更が可能です.サイズ変更すると表示内容は消去されます.また,SHIFTキーを押しながらサイズ変更を行うと,1ピクセル刻みでサイズ変更できます.
テキストウィンドウで SPACEキーを押すとコマンド実行モードになります.現在のところ,あまり大したコマンドはサポートされていません.help と入力すると,コマンドリストが表示されます.
ログ機能を使うと,テキストウィンドウへ出力される内容をファイルに自動的に保存することができます.ESP_StartLog()等を参照してください.
インプットボックス
関数リファレンス:
インプットボックス関連
インプットボックスは,数値や文字を任意のタイミングで入力/出力するためのウィンドウです.
インプットボックスは,プログラムを走らせながら,再コンパイルすることなしに特定のパラメータを変更したい場合に威力を発揮します.
インプットボックスで扱える項目数の上限は30です.
各項目の名前部分をダブルクリックすると,名前を変更することができます.
各項目に入力された数値あるいは文字は,TABキーが押される,他のウィンドウがアクティブになる,Enterキーが押される,のいずれかが行われるとき,更新内容が有効になります.
インプットボックスの左端をマウスでドラッグすると,名前部分のサイズが変更できます.また,反対に,インプットボックスの右端をマウスでドラッグすると,入出力部分のサイズが変更できます.
ボタンボックス
関数リファレンス:
ボタンボックス操作
ボタンボックスは,ボタンクリックによるユーザインタフェースを提供します.
ボタンボックスで扱えるボタンの最大数は256です.
ボタンの数は横数および縦数で指定します.各ボタンには番号がついており,左上のボタンが番号0です.そして,画像と同じように右のボタンへ進む毎に番号が1つ増加し,右端までいったら下の行に移ります.
ボタンボックスは各ボタンがクリックされた回数を記憶しています.
各ボタンの左サイド部分をダブルクリックすると,名前を変更することができます.
ボタンボックスがアクティブ(最前面)状態のとき,数字キー(0 〜 9)を押すと各ボタンをクリックしたのと同じ効果があります.
ボタンボックスの端をマウスでドラッグすると,ボタンボックスのサイズを変更することができます.このとき,各ボタンのサイズは変更されますが,ボタンの横数および縦数は変化しません.
ウィンドウの配置を視覚的に行うには
Ctrlキーを押しながらウィンドウを移動させると,近くのウィンドウに吸い付く機能が働きます.
Altキーを押しながらウィンドウを移動させると,すべてのウィンドウが同時に移動します.
実行ファイルを他の動作環境で実行する
Visual C++ 2013などでは,Windows XP上で動作するプログラムを作成する場合,プロジェクトの設定(全般−プラットフォームツールセット)をWindows XP用(v120_xp等)にしておく必要があります.
ESPLIBをライブラリモードで使用する
#define ESP_LIBRARY_MODE
#include <esplib.h>
int main(void)
{
ESP_Start();
ESP_CreateImage(0,"ImageWindow",432,17,320,240,100);
ESP_OpenTextWindow(0,0,0,400,288);
ESP_Circle(160,120,50,0x00ff00);
ESP_Update();
int n=0;
for(;;){
if(ESP_STOP) break;
ESP_Printf("n=%d\n",n++);
}
char s[10];
printf("Hit enter key to exit program.");
gets_s(s,sizeof(s));
ESP_Exit();
return 0;
}
|