我绘制的线条没有出现在我的输出图形上
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
正在做什么,但从表面上看,没有充分的理由为什么要调用它。您只需要 y1
和 y2
,它们被定义为常量。 columns
你可以从图像的列中判断。我还将借用 Martin J.H 的副本 post。已链接使图形命名 window 更优雅。
要添加到此 post,您的原始代码只是绘制点。如果您还想绘制线条,则需要在每次调用 plot
时从绘图字符串中删除 .
字符。具体来说,将.b
和.m
分别改为b
和m
。
因此,这样做:
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
所以我一次处理一堆图像,试图将它们全部显示为图形,并在每个单独的图像上绘制一系列线条作为处理的结果。在一些帮助下,我解决了图形标题问题,但是绘制的线条没有出现在我的最终图形中,下面是代码:
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
正在做什么,但从表面上看,没有充分的理由为什么要调用它。您只需要 y1
和 y2
,它们被定义为常量。 columns
你可以从图像的列中判断。我还将借用 Martin J.H 的副本 post。已链接使图形命名 window 更优雅。
要添加到此 post,您的原始代码只是绘制点。如果您还想绘制线条,则需要在每次调用 plot
时从绘图字符串中删除 .
字符。具体来说,将.b
和.m
分别改为b
和m
。
因此,这样做:
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