我绘制的线条没有出现在我的输出数据上

时间:2015-03-04 19:23:26

标签: matlab image-processing title matlab-figure figure

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

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),然后对其中的所有像素进行一些统计分析,以便进一步处理技术。

1 个答案:

答案 0 :(得分:0)

columns未定义的原因归因于variable scope。当您在columns中定义SegmentationNew时,columns仅在SegmentationNew 的生命周期内可用,并且中仅显示 SegmentationNewSegmentationNew完成后,column将不再定义。

老实说can't make heads or tails SegmentationNew正在做什么,但从它的外观来看,没有充分的理由说明你应该这样做。您需要的只是y1y2,它们被定义为常量。 columns您可以从图片的列中确定。我还要从Martin J.H.的重复帖子中借钱。链接使命名图形窗口更优雅。

要添加到此帖子,您的原始代码只是绘制点。如果您还要绘制线条,则需要从每个.的调用中删除绘图字符串中的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