Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

impoly

(非推奨) ドラッグとサイズ変更が可能な多角形を作成

関数 impoly は推奨されません。代わりに、新しい Polygon オブジェクトを使用してください。新しい ROI 作成簡易関数 drawpolygon を使用することもできます。別のオプションとして、Polyline オブジェクトを使用して、開いた多角形または "ポリライン" 形状を作成することもできます。詳細については、互換性の考慮事項を参照してください。

説明

impoly オブジェクトはイメージ上に対話型で多角形をカプセル化します。

マウスを使用して、頂点を追加、多角形のサイズと位置を調整できます。多角形には、その外観や動作などを制御するコンテキスト メニューもあります。詳細については、使用方法を参照してください。

作成

説明

h = impoly は、現在の座標軸で多角形の対話型の配置を開始し、impoly オブジェクトを返します。

h = impoly(hparent) は、hparent で指定されるオブジェクトに多角形の対話型の配置を開始します。

h = impoly(hparent,position)position で定義される座標の頂点をもつ、ドラッグとサイズ変更が可能な多角形を作成します。

h = impoly(___,Name,Value) は、多角形の動作をコントロールする名前と値のペアを指定します。

入力引数

すべて展開する

親オブジェクトのハンドル。ハンドルとして指定します。親は通常 axes オブジェクトですが、hggroup オブジェクトの親である他の任意のオブジェクトにもなります。

多角形の頂点の位置。n 行 2 列の行列として指定します。2 つの列は、n 個の各頂点に対して x と y 座標を定義します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

位置制約関数。関数ハンドルとして指定します。fcn はマウスをドラッグできるときはいつでも呼び出せます。この関数を使用して、多角形をドラッグできる場所を制御します。有効な関数ハンドルの詳細については、関数 setPositionConstraintFcn のヘルプを参照してください。

多角形が閉じている。true または false として指定します。true (既定の設定) に設定すると、impoly は閉多角形を作成します。つまり、指定した最後の頂点と指定した最初の頂点間に直線を描き、閉じた領域を作成します。Closedfalse の場合、impoly は最後の頂点を最初の頂点と結ばないので、開いた多角形 (ポリライン) が作成されます。

データ型: logical

プロパティ

すべて展開する

ROI が削除可能。true または false を指定します。

データ型: logical

使用法

対話型構文で impoly を呼び出すと、ポインターはイメージ上で十字形 に変わります。多角形の頂点を定義し、多角形のサイズ、形状、位置を調整するには、マウスをクリック アンド ドラッグします。既定の設定では、impoly は、描画した最後の点と最初の点を結ぶ直線を描画しますが、Closed パラメーターを使用してこの動作を制御できます。

多角形では、その外観や動作などを制御するコンテキスト メニューもサポートされています。コンテキスト メニューに表示される選択肢は、ポインターを多角形の辺 (または領域内の任意の位置) に配置したか、頂点の 1 つに配置したかにより異なります。図は、ポインターが頂点ではなく多角形の上にあるときのコンテキスト メニューを示しています。

The impoly context menu, with options to interactively Copy Position, Set Color, or Delete the polygon.

表に impoly がサポートしている対話型動作を示します。

対話型動作説明
多角形を閉じる

次のいずれかの方法を使用してください。

  • 選択した多角形の最初の頂点にポインターを移動します。ポインターが円 に変わります。いずれかのマウス ボタンをクリックします。

  • 左マウス ボタンをダブルクリックします。この操作により、マウスの下の点に頂点が作成され、この頂点と最初の頂点をつなぐ直線が描画されます。

  • 右マウス ボタンをクリックします。この操作により、選択した最後の頂点と初期の頂点をつなぐラインが描画されますが、新しい頂点は作成されません。

新しい頂点の追加ポインターをポリゴンのエッジに移動します。A キーを押したままにします。ポインターの形状が に変わります。左マウス ボタンをクリックして、ライン上のその位置に新しい頂点を作成します。
頂点の移動(多角形の整形)ポインターを頂点上に移動します。ポインターが円 に変わります。頂点を新しい位置にクリック アンド ドラッグします。
頂点の削除ポインターを頂点上に移動します。形状が円 に変わります。右クリックして、コンテキスト メニューから [頂点の削除 を選択します。この操作により頂点が削除され、多角形の形状が調整されます。削除した頂点の近傍点である 2 つの頂点の間に新しい直線が描画されます。
多角形の削除ポインターを、頂点ではなく、多角形の内側または多角形を定義しているいずれかの線の上に移動します。右クリックして、コンテキスト メニューから [削除] を選択します。コンテキスト メニューからこのオプションを削除するには、Deletable プロパティを false に設定します。h = impoly(); h.Deletable = false;
多角形の移動多角形内のポインターを移動します。ポインターが花形 に変わります。マウスをクリック アンド ドラッグして、多角形を移動します。
多角形の色の変更多角形内のポインターを移動します。右クリックで表示されるコンテキスト メニューから [色の設定] を選択します。
頂点の座標の取得 多角形内のポインターを移動します。右クリックして、コンテキスト メニューから [位置のコピー] を選択します。impoly は、各頂点の x および y 座標を含む n 行 2 列の配列をクリップボードにコピーします。n は指定された頂点の数です。

オブジェクト関数

impoly オブジェクトは、多くのメソッドをサポートしています。詳細なリストを参照するには、methods impoly を入力してください。

addNewPositionCallbackROI オブジェクトに新しい位置のコールバックを追加する
createMask(非推奨) イメージ内にマスクを作成する
deleteハンドル オブジェクトの削除
getColorROI オブジェクトの描画に使用する色を取得する
getPositionROI オブジェクトの現在の位置を返す
getPositionConstraintFcn現在の位置制約関数への関数ハンドルを返す
removeNewPositionCallbackROI オブジェクトから新しい位置のコールバックを削除する
resume(非推奨) MATLAB コマンド ラインの実行の再開
setClosedROI オブジェクトのクローズ動作の設定
setColor(非推奨) ROI オブジェクトの描画に使用する色の設定
setConstrainedPositionROI オブジェクトに新しい位置を設定する
setPosition(非推奨) ROI オブジェクトを新しい位置に移動
setPositionConstraintFcnROI オブジェクトの位置制約関数の設定
setVerticesDraggableROI オブジェクトの頂点の動作の設定
wait(非推奨) ROI の作成が完了するまで MATLAB コマンド ラインをブロックする

すべて折りたたむ

イメージを表示します。

imshow("gantrycrane.png")

Image of crane trusses in a MATLAB figure window.

5 個の頂点の位置を指定してイメージ上に多角形を描画します。

h = impoly(gca,[188,30; 189,142; 93,141; 13,41; 14,29]);

Image of crane trusses in a MATLAB figure window, with a polygon with five vertices around a truss.

多角形の色を黄に設定します。

setColor(h,"yellow");

Image of crane trusses with a polygon around five vertices. The vertices and sides of the polygon are yellow.

新しい位置のコールバック関数を定義します。この関数は多角形を移動するときに常に多角形の現在の位置を表示します。

addNewPositionCallback(h, @(p) title(mat2str(p,3)));

Image of crane trusses with a polygon. The figure window displays the horizontal and vertical positions of the polygon vertices as a vector.

makeConstrainToRectFcn を使用し、イメージの境界を範囲として指定することで、多角形の移動を制限する関数を作成します。setPositionConstraintFcn を使用して境界制約関数を実行します。

fcn = makeConstrainToRectFcn("impoly",get(gca,"XLim"),get(gca,"YLim"));
setPositionConstraintFcn(h,fcn);

Image of crane trusses with a polygon. The polygon cannot move past the image border.

イメージを表示します。

figure
imshow("gantrycrane.png");

Image of crane trusses in a MATLAB figure window.

複数の頂点を指定して多角形を作成しますが、対話形式で終了できるように未完成の状態にします。この例では、Closedfalse に設定しているため、多角形は開いたままです。多角形の端点のいずれかにカーソルを移動すると、カーソルの形状が円に変わります。

h = impoly(gca,[203,30; 202,142; 294,142],"Closed",false);

Image of crane trusses with a partially drawn polygon.

多角形を完成します。既存ラインの終端の 1 つをつかみます。ラインをドラッグして、作成する形状のもう一方のコーナーに延長します。次に、ライン上で A キーを押したままカーソルを置き、頂点をラインに追加します。頂点を作成したら、その頂点を任意の位置にドラッグすると目的の形状を作成できます。必要に応じてラインのドラッグや頂点の追加を続けます。詳細については、使用方法を参照してください。

Image of crane trusses with a partially drawn polygon. Press and hold the A key to enable the add vertex cursor.

ヒント

image オブジェクトを含んでいる axes で impoly を使用し、位置制約関数を指定しない場合、イメージの範囲外に多角形をドラッグすると、それが失われることがあります。関数 plot で作成した座標軸で使用すると、多角形が座標軸の範囲外にドラッグされた場合、座標軸の範囲は自動的に拡張されます。

バージョン履歴

R2007b で導入

すべて折りたたむ

R2018b: 関数 impoly は非推奨

R2018b 以降、既存の ROI オブジェクトのセットが新しい ROI オブジェクトのセットに置き換えられています。新しいオブジェクトは、面の色の透明度など、さらに便利な機能を提供します。新しいクラスでは、移動やクリックなどの ROI の変化に応答するために使用できるイベントもサポートされています。現時点では、以前の ROI オブジェクトを削除する予定はありませんが、追加された機能や柔軟性を活用するために、新しい ROI に切り替えてください。新しい ROI 関数を使用した ROI の作成方法の詳細については、ROI の形状の作成を参照してください。

impoly オブジェクトを使用する代わりに、Polygon または Polyline オブジェクトを使用してください。関数 drawpolygon または drawpolyline を使用して、これらのオブジェクトを作成することもできます。

ROI 作成コードの更新

impoly のすべてのインスタンスを更新してください。

非推奨の使用方法推奨される代替案

この例では閉じた多角形 ROI を作成します。

imshow("cameraman.tif");
h = impoly(gca,[10 10; 10 100; 80 100]);

次のコードは等価なコードで、古い ROI オブジェクトが新しい ROI オブジェクトに置き換えられています。この例では、ROI 作成簡易関数を使用しています。位置の情報を名前と値の引数として指定しなければならないことに注意してください。

imshow("cameraman.tif");
h = drawpolygon(gca,"Position",[10 10; 10 100; 80 100]);
その他の ROI コードの更新

impoly ROI オブジェクトのいずれかのオブジェクト メソッドを使用するコードを更新してください。多くの場合、単純に Polygon ROI オブジェクト プロパティの値にアクセスするかその値を設定することによって、オブジェクト メソッド impoly の呼び出しを置き換えることができます。たとえば、getColor または setColor の呼び出しの代わりに Color プロパティを使用します。場合によっては、オブジェクト メソッド impoly を新しい ROI のオブジェクト メソッドに置き換えなければなりません。各 ROI オブジェクト メソッド impoly のドキュメンテーションには、新しい ROI オブジェクトへの移行に関する情報が含まれています。移行の概要については、ROI の移行を参照してください。