gpt4 book ai didi

java - OpenCV HoughLine 只检测图像中的一条线

转载 作者:行者123 更新时间:2023-12-02 11:59:15 27 4
gpt4 key购买 nike

我正在关注文档/tutorial openCV 来检测图像中的线条。然而,我只得到了图像中四条相似线条中的一条。这是result

这是我的代码:

Mat im = Imgcodecs.imread("C:/Users/valer/eclipse-workspace/thesis-application/StartHere/resource/4 lines.JPG");

Mat gray = new Mat(im.rows(), im.cols(), CvType.CV_8SC1);

Imgproc.cvtColor(im, gray, Imgproc.COLOR_RGB2GRAY);

Imgproc.Canny(gray, gray, 50, 150);

Mat lines = new Mat();

Imgproc.HoughLines(gray, lines, 1, Math.PI/180, 200);

for (int i = 0; i < lines.cols(); i++){
double data[] = lines.get(0, i);
double rho = data[0];
double theta = data[1];
double cosTheta = Math.cos(theta);
double sinTheta = Math.sin(theta);
double x0 = cosTheta * rho;
double y0 = sinTheta * rho;
Point pt1 = new Point(x0 + 10000 * (-sinTheta), y0 + 10000 * cosTheta);
Point pt2 = new Point(x0 - 10000 * (-sinTheta), y0 - 10000 * cosTheta);
Imgproc.line(im, pt1, pt2, new Scalar(0, 0, 200), 3);
}
Imgcodecs.imwrite("C:/Users/valer/eclipse-workspace/thesis-application/StartHere/resource/process/line_output.jpg", im);

我尝试过使用阈值参数,但我不断得到相同的(有时是最糟糕的)结果。有人请指出我哪里做错了吗?

最佳答案

在行矩阵结果中,行是按行存储的,而不是按列存储的。因此,lines.rows() 会为您提供行数,您可以使用lines.get(i, 0) 进行迭代来获取每一行。

关于java - OpenCV HoughLine 只检测图像中的一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47389128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com