所以我一次处理一堆图像,试图将它们全部显示为图形,并在每个图像上显示一系列绘制的线条作为该过程的结果。在一些帮助下我修复了图形标题问题,但是绘制的线条没有出现在我的最终数字上,下面是代码:
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),然后对其中的所有像素进行一些统计分析,以便进一步处理技术。
答案 0 :(得分:0)
您columns
未定义的原因归因于variable scope。当您在columns
中定义SegmentationNew
时,columns
仅在SegmentationNew
的生命周期内可用,并且中仅显示 SegmentationNew
。 SegmentationNew
完成后,column
将不再定义。
老实说can't make heads or tails SegmentationNew
正在做什么,但从它的外观来看,没有充分的理由说明你应该这样做。您需要的只是y1
和y2
,它们被定义为常量。 columns
您可以从图片的列中确定。我还要从Martin J.H.的重复帖子中借钱。链接使命名图形窗口更优雅。
要添加到此帖子,您的原始代码只是绘制点。如果您还要绘制线条,则需要从每个.
的调用中删除绘图字符串中的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