画像の切り出しとその方法

75 ビュー (過去 30 日間)
Takanori Aihara
Takanori Aihara 2020 年 12 月 10 日
コメント済み: NAOAKI MIYAMOTO 2022 年 5 月 12 日
画像の四角形トリミング範囲n×mを任意で決め,
且つ原画像の任意の範囲を画像を確認しながら決められる方法は何かありますか?
イメージとしては,原画像上にトリミング範囲の四角形が表示され,lそれをドラッグで動かす感じです.
よろしくお願いします.

採用された回答

Shunichi Kusano
Shunichi Kusano 2020 年 12 月 10 日
こんにちは。drawrectangle関数で、画像に四角形を描画できますが、その際に初期値を決めておけばそのサイズの四角形を描画させることができ、かつ描画したオブジェクトはマウスで動かすことができます。動かした後、オブジェクトのハンドルを見ると、動かした先のPositionを得ることができます。下記がサンプルコードとなります。
img = imread('peppers.png'); % 画像の読み込み
imshow(img) % 表示
h = drawrectangle('Position',[1 1 100 50]); % (1,1)を左上座標とした幅100,高さ50の領域生成
% この状態で、四角をマウスでぐりぐり動かして、切り抜きたい範囲にあわせてください
roi = h.Position;
imgCrop = imcrop(img,roi); % 切り抜き
注意点として、上の例ですと切り抜かれた画像サイズは51x101(x3)になっています。気持ち悪いですね。詳細はimcrop関数のdocumentをご覧いただきたいのですが、こういう仕様になっています。ですので、切り抜き後のサイズをかっちり決めたいのであれば、その値-1をdrawrectangleで指定してあげてください(上記の例なら[1 1 99 49])。
  8 件のコメント
NAOAKI MIYAMOTO
NAOAKI MIYAMOTO 2022 年 5 月 12 日
ご対応ありがとうございます。
やりたいことができるようになりました!

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!