我绘制的线条没有出现在我的输出图形上

My plotted lines aren't appearing on my output figures

所以我一次处理一堆图像,试图将它们全部显示为图形,并在每个单独的图像上绘制一系列线条作为处理的结果。在一些帮助下,我解决了图形标题问题,但是绘制的线条没有出现在我的最终图形中,下面是代码:

inputFolder = fullfile(pwd, 'BMPData');
filePattern = fullfile(inputFolder, '*.bmp');
%Get list of all Bmp Files in Folder
BmpFiles = dir(filePattern)

for i=1:length(BmpFiles)
    fname = BmpFiles(i).name;
    fullFileNameInput = fullfile(inputFolder,fname);
    A = imread(fullFileNameInput);

    %// Change
    AR=A(:,:,1);
    [rows, columns] = size(AR);
    y1 = 200;
    y2 = 315;
    row1 = AR(y1, :); % Extract this line of gray levels from the image.
    row2 = AR(y2, :);
    figure('name',fname),imshow(A), hold on; 
    plot([0, columns], [y1, y1], '.b'); 
    plot([0, columns], [y2, y2], '.m');
end

我这样做的原因是因为我想在我的所有图像上标记 2 行(200 和 315),然后对这些行中的所有像素进行一些统计分析以用于进一步的处理技术。

您得到 columns 未定义的原因是 variable scope。当您在 SegmentationNew 中定义 columns 时,columns 仅在 SegmentationNew 的生命周期内可用并且仅可见 SegmentationNew 内。 SegmentationNew 完成后,将不再定义 column

老实说,我 can't make heads or tails 知道 SegmentationNew 正在做什么,但从表面上看,没有充分的理由为什么要调用它。您只需要 y1y2,它们被定义为常量。 columns 你可以从图像的列中判断。我还将借用 Martin J.H 的副本 post。已链接使图形命名 window 更优雅。

要添加到此 post,您的原始代码只是绘制点。如果您还想绘制线条,则需要在每次调用 plot 时从绘图字符串中删除 . 字符。具体来说,将.b.m分别改为bm

因此,这样做:

for i=1:length(BmpFiles)
    fname = BmpFiles(i).name;
    fullFileNameInput = fullfile(inputFolder,fname);
    A = imread(fullFileNameInput);

    %// Change
    columns = size(A,2);
    y1 = 200;
    y2 = 315;

    figure('name',fname); %// Change
    imshow(A); hold on;
    plot([0, columns], [y1, y1], 'b'); hold on; %// Change
    plot([0, columns], [y2, y2], 'm');
end