Поворот полишапа на основе центроида - Matlab - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть изображение, которое я конвертирую в класс полишапов, как я могу повернуть его на основе точки центроида?Код:

url='http://www.clker.com/cliparts/T/i/o/c/X/Q/airplane-md.png';
I = imread(url);
I = rgb2gray(I);
I = imcomplement(I);

imshow(I);
hold on;
BW = imbinarize(I);
[B,L] = bwboundaries(BW,'noholes');
k=1;
stat = regionprops(I,'Centroid');
b = B{k};
c = stat(k).Centroid;
yBoundary = b(:,2);
xBoundary = b(:,1);
cy = c(:,2);
cx = c(:,1);

pgon1 = polyshape(yBoundary, xBoundary); 
plot(pgon1);
poly1 = rotate(pgon1,45);
plot(poly1);

1 Ответ

0 голосов
/ 16 ноября 2018

polyshape.rotate принимает необязательный третий аргумент refpoint, который будет источником вращения:

% ...
b = B{k};
c = stat(k).Centroid;
pgon1 = polyshape(b(:,1), b(:,2)); 
poly1 = rotate(pgon1, 45, c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...