[解決済み] Matlab の imrect を用いて,新しい矩形の座標を取得します.
2022-02-15 22:27:46
質問
私のプロジェクトでは、ROIを抽出する必要がある写真がたくさんあります。プロジェクトが始まると、画像が表示され、ユーザが必要なROIを選択できるようにしたいのですが、どうすればよいでしょうか?関数
imrect
はそうなっているようです。私は、矩形がドラッグされたり、サイズが変更されたりしたときの座標を取得しようとしています。問題は、返される値が正しくないようだということです。
問題が見つからないようで、関連する質問も役に立ちませんでした。私は
imcrop
しかし、これ以上うまくはいかない...。
function [ new_image ] = getRoi(image)
rect = size(image);
rect = round(rect ./2);
figure, imshow(image);
h = imrect(gca, [5 5 rect(2) rect(1)]);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim'));
accepted_pos = wait(h);
setPositionConstraintFcn(h,fcn);
%getPositionConstraintFcn(h);
pos = getPosition(h);
if round(pos(1)) < round(pos(2))
X1 = round(pos(1))
X2 = round(pos(2))
else
X1 = round(pos(2))
X2 = round(pos(1))
end
if round(pos(3)) < round(pos(4))
Y1 = round(pos(3))
Y2 = round(pos(4))
else
Y1 = round(pos(4))
Y2 = round(pos(3))
end
new_image = image(Y1:Y2, X1:X2);
%name = strcat('Roi_', datestr(clock, 'yyyymmddTHHMMSS'),'.png');
%prtIm(new_image, name, '-s');
new_image = image;
end
解決方法は?
getPosition
リターン
[xmin, ymin, width, height]
. 希望の座標を得るには、次のようにします。
X1 = round(pos(1));
Y1 = round(pos(2));
X2 = round(X1 + pos(3));
Y2 = round(Y1 + pos(4));
関連
-
[解決済み] MATLABでベクトルからNaNを除去する
-
[解決済み] Matlab: 逆コサイン(acos)の完全解を返す
-
[解決済み] Matlabで描画しています。図形を保存するか、変数を保存するか?
-
[解決済み] MATLABとラスタープロット
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] Matlab: 小図形ウィンドウでYラベルが表示されない
-
[解決済み] MATLABのrepmatに相当するものはNumPyでは何ですか?
-
[解決済み] Matlabのticとtoc関数に相当するPythonの関数は何ですか?
-
[解決済み] Mathematica でWaldoを見つけるにはどうしたらよいですか.
-
[解決済み】ImageMagickでJPGファイルを圧縮するための推奨事項
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「名前が重複する関数は定義できません」エラーが出るが、重複する関数はない。
-
[解決済み] MATLABで1つの点の最近傍を検索する
-
[解決済み] MATLABエラー "このコンテキストでは関数定義は許可されていません。" [重複しています]。
-
[解決済み] Matlabで列ベクトルを反復処理する方法は?[重複].
-
[解決済み] MATLABでマシンイプシロンを計算する方法は?
-
[解決済み] Wolfram AlphaとMATLABでは伝達関数のプロットが異なる
-
[解決済み] 匿名関数の微分
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] RGBカラーによるMATLABプロット