Cropping imagesc with a handler and rect
1 回表示 (過去 30 日間)
古いコメントを表示
Hello!
I'm currently working on a project which requires me to crop detected objects out of frames of images. X,Y coordinates are already obtained automatically.
The frame can only be displayed using imagesc instead of imshow.
I would like to crop but imcrop requires the frame to be saved as an image first. However, when I save the imagesc as an image file and reopen it for cropping, the X and Y coordinates of the objects to be cropped have changed.
%% Display frame with detected objects, only 2 images detected is sufficient
z=1 %frame number
bin_image{z}
handler = imagesc(bin_image{z}.frame);
hold on;
x1=bin_image{z}.x(1); %coordinates of object detected
x2=bin_image{z}.x(2);
x3=bin_image{z}.x(3);
x4=bin_image{z}.x(4);
y1=bin_image{z}.y(1);
y2=bin_image{z}.y(2);
y3=bin_image{z}.y(3);
y4=bin_image{z}.y(4);
rectangle('Position',[x1 y1 x2-x1 y2-y1],'EdgeColor','r');
rectangle('Position',[x3 y3 x4-x3 y4-y3],'EdgeColor','r');
saveas(handler,sprintf('Savedframe%d.png',z));
hold off;
Imagesc coordinates:
x: [205 216 223 234 0 0 0 0 0 0 0 0 0 0 0 0]
y: [91 108 91 108 0 0 0 0 0 0 0 0 0 0 0 0]
num_obj: 2
By manually crop and trial and error, i realised that the corrdinates of x and y of the two objects have changed when I want to crop out the two objects. How do I avoid the change in coordinates, because I would like to automate this process if given a few hundred frames to crop out from? Thank you!
%% Crop Rectangles
I = imread('SavedFrame1.png');
J = imcrop(I,[590 318 201 69]);
handler2 = imshow(J);
saveas(handler2,sprintf('SavedCrop1.png'));
2 件のコメント
Image Analyst
2019 年 2 月 23 日
"imcrop requires the frame to be saved as an image first" well, don't you HAVE images? If not, what do you have? Isn't bin_image{z}.frame an image? If not, exactly what is it?
回答 (1 件)
Image Analyst
2019 年 2 月 23 日
You should be saving the images bin_image{z}.frame and "J" directly with imwrite() instead of saving the figure windows with saveas().
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!