Подплот два изображения с вертикальным разделителем - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь создать фигуру с изображением слева (исходное изображение) и изображением справа (искаженное изображение) и вертикальной линией, разделяющей их, например:

enter image description here

Я пробовал это делать, создавая оси без тиков и меток.Затем рисуем линию снизу вверх и применяем hold on и, наконец, subplot два изображения.

Мой код:

origImage = imread('F-original.png');
tform = affine2d([1 0 0; .5 1 0; 0 0 1]);
warpedImage = imwarp(origImage, tform, 'interp', 'bilinear');

axes('Position', [0 0 1 1], 'XTick', NaN, 'YTick', NaN);
line([1/2 1/2], [0 1], 'Color', 'k')
axes(gca)
hold on

subplot(1, 2, 1)
imshow(origImage)

subplot(1, 2, 2)
imshow(warpedImage)

Но на самом деле происходит следующее: линия мигает длядоли секунды, но затем исчезает, и все, что можно увидеть, это подзаговоры.

Как заставить это работать?

1 Ответ

0 голосов
/ 10 февраля 2019

Для достижения этого результата вы должны использовать annotation, который является графическим объектом на уровне фигуры (т.е. не ограничен осями, поэтому не требуетhold on и т. Д.).

Вот пример:

function q54617073
% Prepare images:
origImage = imread('ngc6543a.jpg');
tform = affine2d([1 0 0; .5 1 0; 0 0 1]);
warpedImage = imwarp(origImage, tform, 'interp', 'bilinear');
% Create a figure with a white background:
figure('Color','w');
% Plot the two images:
subplot(1, 2, 1); imshow(origImage);
subplot(1, 2, 2); imshow(warpedImage);
% Add the Line
annotation('line', [0.52 0.52], [0.2 0.8], 'Color', 'r', 'LineWidth', 3);

В результате:

enter image description here

...