1. ホーム
  2. matlab

[解決済み] 指定された矩形に含まれる配列中の点を見つける( matlab )

2022-02-15 01:09:48

質問

私は、画像のいくつかの点からなる行列を持っています。

Cout=
[215,59;165,126;215,72;236,65;258,60;296,71;296,84;246,77;240,120;228,120;225,74;176,58;178,72];

次に、以下の矩形内の点を見つけたい [x,y,width,height] 。

rec=[105,210,31,31]

Matlabでどのようにコーディングすればよいのでしょうか? ありがとうございます。

どのように解決するのですか?

inpolygonを使用する。 https://www.mathworks.com/help/matlab/ref/inpolygon.html]。

どのように機能するのか

in = inpolygon(xq,yq,xv,yv) xqとyqで指定されたクエリーポイントが、xvとyvで定義されたポリゴン領域の内側か端にあるかを示すinを返します。

xq: クエリ点の x 座標。スカラ、ベクトル、行列、または多次元配列で指定される(xq のサイズは yq のサイズと一致しなければならない)。

yq: クエリポイントの y 座標.スカラー,ベクトル,行列,または多次元配列として指定されます.

xv: ポリゴン頂点のx座標,ベクトルとして指定される(xvのサイズはyvのサイズと一致する必要がある).

yv: ベクトルとして指定されたポリゴン頂点の y 座標.

in: ポリゴン領域の内側または端にある点を示す指標で,論理配列として返される。

% points of image you're searching
% (x,y) are not the coordinates of matrices in MATLAB! And images are 
% matrices. The coordinates of matrices are (row, column) which is NOT (x,y) - it's (y,x). 
yq=Cout(:,1)
xq=Cout(:,2)

xv=[rec(1);rec(1);rec(1)+rec(3);rec(1)+rec(3);rec(1)];
yv=[rec(2);rec(2)+rec(4);rec(2)+rec(4);rec(2);rec(2)];

in = inpolygon(xq,yq,xv,yv)

こうしてみると、2点ありますね。