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

4 次查看(过去 30 天)
Yuka Sashihara
Yuka Sashihara 2022-4-25
画像の中央部を切り抜き、保存したいです。
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
参考

回答(1 个)

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

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!