From points to closed contour

I have 6 points as shown in the picture above.
Can I make a closed contour from the 6 points as shown below?
I've tried to use creating ellipse and imfill() but they didn't work.
Thank you.

 Accepted Answer

Ameer Hamza
Ameer Hamza on 23 Apr 2020
Edited: Ameer Hamza on 23 Apr 2020
Try this
im = im2double(imread('image.jpeg'));
im_gray = rgb2gray(im);
im_gray = imbinarize(im_gray)*1;
[r,c] = find(im_gray==1);
points = [c r];
p = convhull(points);
points = points(p, :).';
poly_points = points(:).';
im_gray = insertShape(im_gray, 'FilledPolygon', poly_points, ...
'Color', [1 1 1], ...
'Opacity', 1, ...
'SmoothEdges', false);
imshow(im_gray);

7 Comments

Thank you for your response.
Why r, c being [c r] in points?
Yohanes Setiawan
Yohanes Setiawan on 24 Apr 2020
Edited: Yohanes Setiawan on 24 Apr 2020
Anyway, I haven't had Computer Vision Toolbox :'(
I'm using MATLAB R2018b
This code use image processing toolbox
im = im2double(imread('image.jpeg'));
im_gray = rgb2gray(im);
im_gray = imbinarize(im_gray)*1;
[r,c] = find(im_gray==1);
points = [c r];
p = convhull(points);
points = points(p, :);
im_gray = roipoly(im_gray, points(:,1), points(:,2));
imshow(im_gray);
Thanks!
I've installed new version of MATLAB which has Computer Vision Toolbox.
Then I'm running your code and get this error:
Error using insertShape
Expected input number 1, I, to be one of these types:
uint8, uint16, int16, double, single
Instead its type was logical.
Can you show your code?
It has been solved!
I changed into double and WORKED!
Thank you so much for your help.
I am glad to be of help.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!