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

4 views (last 30 days)
Yuka Sashihara
Yuka Sashihara on 25 Apr 2022
Edited: Hernia Baby on 3 May 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
参考

Answers (1)

Hernia Baby
Hernia Baby on 25 Apr 2022
Edited: Hernia Baby on 25 Apr 2022
恐らくですが以下の引数を誤っています。
imgCrop=imcrop(I,[ar br ar-1 br-1]);
(x,y)は(b,a)に対応しています
imcrop(I,[br ar br-1 ar-1]);
こちら ご参考ください
  2 Comments
Yuka Sashihara
Yuka Sashihara on 1 May 2022
ありがとうございます!間違っていました、ご指摘ありがとうございます。
縦横3等分したいのですが、実行すると1ピクセル×縦の分割になります。お手数をおかけしますが、こちらの正しい書き方はわかりますか?
Hernia Baby
Hernia Baby on 2 May 2022
Edited: Hernia Baby on 3 May 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})

Sign in to comment.

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!