У меня есть код из учебника, и я хочу определить прямые линии на изображении. У меня есть этот код, но для 1 строки HoughLinesP генерирует сотни точек вместо 2 точек (начальная точка и конечная точка - [x1, y1] и [x2, y2]). Даже если я использую пустое изображение, я получаю 99 баллов ... Спасибо вам большое.Как обнаружить строку в изображении с помощью OpenCV в Java
Mat src = Highgui.imread("C:/Users/Daniel/Desktop/line.png",Highgui.CV_LOAD_IMAGE_COLOR);
Mat lines = new Mat();
Mat grey = new Mat();
Imgproc.cvtColor(m, grey, Imgproc.COLOR_BGR2GRAY);
Imgproc.HoughLinesP(grey, lines, 1, Math.PI/180, 50, 50, 10);
for (int x = 0; x < lines.cols(); x++)
{
double[] vec = lines.get(0, x);
double x1 = vec[0],
y1 = vec[1],
x2 = vec[2],
y2 = vec[3];
Point start = new Point(x1, y1);
Point end = new Point(x2, y2);
Core.line(grey, start, end, new Scalar(100,100,100), 1);
}
//just show image
new LoadImage("C:/Users/Daniel/Desktop/cdst.jpg",cdst);
//print matrix of points of all lines - here I get a lot of points for 1 line
System.out.println(lines.dump());
Не используйте обнаружение края, если она не нужна! Если ваше изображение уже является прямой линией, просто передайте его Hough (преобразован в серый) – Miki
Я пробовал это раньше, но это дает мне странные результаты. Поэтому я подумал, что мне нужен алгоритм Canny. Если я использую код без алгоритма Canny, я получаю много очков. Если я показываю новое изображение с обнаруженными строками, я вижу изображение со случайными строками. Например, у меня есть изображение с 1 строкой, только для тестирования. Без Canny он генерирует сотни точек ... –
Начните с создания промежуточных выходов на каждом шаге. Затем загрузите входные изображения, промежуточные изображения, чтобы другие пользователи хорошо знали о проблеме. Во-вторых, напишите аналитически. Не пытайтесь суммировать все в одном отрывке. Сообщество воспримет это как хороший знак того, что вопрос putter поставил достаточно работы. – saurabheights