MATLAB:无法让 houghlines 检测甚至是一条简单的线?
MATLAB: can't get houghlines to detect even a simple line?
我正在学习 hough
和 houghlines
如何在 MATLAB 中工作,但我似乎无法使函数文档中的示例代码即使对于 simple line 我是用Paint画的
这是我正在使用的代码:
clear all; clc; close all
I = imread('lines2.png');
BW = im2bw(I);
[H,T,R] = hough(BW,'Theta',-90:0.1:89.99,'RhoResolution',1);
P = houghpeaks(H,2);
lines = houghlines(H,T,R,P,'FillGap',10,'MinLength',1);
figure, imshow(I), hold on
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
end
我得到 this 结果(线条的末端位于图像本身之外)。其他人可以复制它吗?
我已经尝试修改 hough
的参数,但是 none 我的测试给出了预期的结果。实际上,将 'Theta'
参数的步长设置为 1 会导致无法获取右侧的行。我也尝试用 BW=~BW;
反转图像,但后来我只得到一条离框架很远的线...
对于 houghlines,第一个输入是 BW 而不是 H。在您的代码中使用 ~BW 使线条变白,背景变黑。通过这些更改,您的代码应该可以正常工作。
lines = houghlines(BW,T,R,P,'FillGap',10,'MinLength',1);
我正在学习 hough
和 houghlines
如何在 MATLAB 中工作,但我似乎无法使函数文档中的示例代码即使对于 simple line 我是用Paint画的
这是我正在使用的代码:
clear all; clc; close all
I = imread('lines2.png');
BW = im2bw(I);
[H,T,R] = hough(BW,'Theta',-90:0.1:89.99,'RhoResolution',1);
P = houghpeaks(H,2);
lines = houghlines(H,T,R,P,'FillGap',10,'MinLength',1);
figure, imshow(I), hold on
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
end
我得到 this 结果(线条的末端位于图像本身之外)。其他人可以复制它吗?
我已经尝试修改 hough
的参数,但是 none 我的测试给出了预期的结果。实际上,将 'Theta'
参数的步长设置为 1 会导致无法获取右侧的行。我也尝试用 BW=~BW;
反转图像,但后来我只得到一条离框架很远的线...
对于 houghlines,第一个输入是 BW 而不是 H。在您的代码中使用 ~BW 使线条变白,背景变黑。通过这些更改,您的代码应该可以正常工作。
lines = houghlines(BW,T,R,P,'FillGap',10,'MinLength',1);