0
我已经创造了MATLAB函数返回一个形象:MATLAB函数返回的图像
function [BW3] =lineAnalysis(BW1, O)
BW2 = double(BW1 > 0);
BW3 = BW2(2:end, :); % <-- REMOVE 1st LINE (ARTIFACT)!
if O==0; % 1 for left
BW3 = fliplr(BW3); % <-- FLIP IT HERE!
end
BW3_orig = BW3; % <-- SAVE ORIGINAL VERSION
% STEP 1
n = 10; t = 0.9;
c = 0:(n - 1);
j0 = 1;
while mean(mean(BW3(1 + c, j0 + c))) < t
j0 = j0 + 1;
end
% STEP 2
i0 = 1;
while mean(mean(BW3(i0 + c, 1 + c))) < t
i0 = i0 + 1;
end
% STEP 3
a = (1 - j0)/(i0 - 1);
b = j0 - a;
for i = 1:i0
for j = 1:round(a * i + b)
BW3(i, j) = 0;
end
end
% STEP 4
w = 20;
for i = 1:round(i0 - w/a)
for j = max(1, round(a * i + b + 1)):round(a * i + b + w)
BW3(i, j) = 1;
end
end
% PLOT RESULT
[BW3] = size(BW3);
[nr, nc] = size(BW3);
% figure
subplot(122), imagesc(BW3), colormap(gray)
axis equal off, axis([1, nc, 1, nr]), title('Corrected')
这完美的作品。
但是我想在我的主程序中返回结果而不是执行 imshow(BW3);
内的函数。
我也试着这样做:
[BW3]=lineAnalysis(P, O);
然后我试图做
imshow(BW3);
然而,这不工作时,我表明这样的图像来显示图像。它只是插入一个黑色图像和一个白色图像。
谁能告诉我如何解决这个问题?
谢谢:)
这也没用!它只是显示一个白色的图像。我会将我的函数的代码添加到问题,因为我错了一些 – user1853871
@ user1853871是的,你最好粘贴你的代码和确切的错误。你目前的解释是不够的,但我打赌它必须将你的图像从逻辑或uint8变成双重。 – carandraug
@ user1853871它不能工作。如果它有效,那么你在问题上粘贴的代码与你正在运行的代码不一样。 – carandraug