我的代码如下所示:
p = imread('C.png');
p1 = im2double(p);
RG = insertShape(p1, 'Filledcircle', pos1, 'LineWidth', 10,'Color','blue','Opacity',1);
RG = insertShape(RG, 'Line', {line1,line2},'Color',{0 1 0;0 1 1});
hc = imshow(RG);
legend(hc,'line1','line2');
legend('show');
我正在使用图像查看器应用程序从我插入的圆圈中获取x和y坐标,这不是让坐标将它们连接在一起的正确方法。
答案 0 :(得分:0)
insertShape
直接修改图像的RGB数据,不会为插入的形状生成图形对象。因此,legend
无法显示图形句柄(另请参阅:the valid object types for legend
作为一种解决方法,您可以为每个形状生成虚拟线系列。由于MATLAB不会以可视方式呈现NaN
值,因此它们可用于创建未在轴上显示的线对象。
例如:
% Read sample image
RGB = imread('peppers.png');
imshow(RGB);
% Add some annotations
dim1 = [0.3 0.7 0.2 0.2];
annotation('rectangle', dim1, 'Color', 'red')
dim2 = [0.6 0.5 0.1 0.1];
annotation('rectangle', dim2, 'Color', 'blue')
x1 = [0.5 0.6];
y1 = [0.7 0.5];
annotation('line', x1, y1, 'Color', 'green', 'LineWidth', 2)
x2 = [0.5 0.7];
y2 = [0.9 0.6];
annotation('line', x2, y2, 'Color', 'magenta', 'LineWidth', 2)
% ============== EVERYTHING ABOVE THIS LINE IS SPECIFIC TO MY EXAMPLE, IGNORE IT
% Plot dummy lineseries for legend
% Specify 'DisplayName' for legend, can also be done manually in legend call
hold on
tmp(1) = plot(NaN, 'Color', 'green', 'LineWidth', 2, 'DisplayName', 'Green Line');
tmp(2) = plot(NaN, 'Color', 'magenta', 'LineWidth', 2, 'DisplayName', 'Magenta Line');
hold off
% Display legend
legend(tmp)
产生以下内容: