imcropで画像を切り抜くと空行列になる

3 visualizaciones (últimos 30 días)
Yuka Sashihara
Yuka Sashihara el 25 de Abr. de 2022
Editada: Hernia Baby el 3 de Mayo de 2022
画像の中央部を切り抜き、保存したいです。
imcropでプロセスしたイメージが真っ白な画像になってしまいます。ワークスペースでみてもimgCropが空行列になっているようです。
シンプルなミスだと思います、恐縮ですがどなたか教えていただけないでしょうか。
for i=1:size(im_name,1)
I=imread(im_name{i});
imshow(I);
[a, b]=size(I);
ar=round(a/3);
br=round(b/3);
imgCrop=imcrop(I,[ar br ar-1 br-1]);
%width, height each subtracted by 1 to obtain a/3×b/3
imshow(imgCrop);
save_loc='こちらでは省略';
fileName = [save_loc, '\img',int2str(i), '_', 'middle', '.jpg'];
imwrite(imgCrop,fileName);
end
参考

Respuestas (1)

Hernia Baby
Hernia Baby el 25 de Abr. de 2022
Editada: Hernia Baby el 25 de Abr. de 2022
恐らくですが以下の引数を誤っています。
imgCrop=imcrop(I,[ar br ar-1 br-1]);
(x,y)は(b,a)に対応しています
imcrop(I,[br ar br-1 ar-1]);
こちら ご参考ください
  2 comentarios
Yuka Sashihara
Yuka Sashihara el 1 de Mayo de 2022
ありがとうございます!間違っていました、ご指摘ありがとうございます。
縦横3等分したいのですが、実行すると1ピクセル×縦の分割になります。お手数をおかけしますが、こちらの正しい書き方はわかりますか?
Hernia Baby
Hernia Baby el 2 de Mayo de 2022
Editada: Hernia Baby el 3 de Mayo de 2022
以下のようになります
clc,clear;
I = imread('chacha_sq.jpeg');
imshow(I)
まず行と列を3等分します
[row, line] = size(I(:,:,1))
row = 1535
line = 1536
n = 3;
idx = floor([row line]./n);
各セルに格納していきます
for ii = 1:n
for jj = 1:n
A{ii,jj,:} = I(idx(1).*(ii-1)+1:idx(1).*ii, ...
idx(2).*(jj-1)+1:idx(2)*jj,:);
end
end
最後に真ん中の切り抜きを見てみましょう
imshow(A{2,2})

Iniciar sesión para comentar.

Categorías

Más información sobre Image Processing Toolbox en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!