Есть ли какая-нибудь функция opencv, например, «cvHoughCircles ()» для обнаружения квадрата?

Существуют ли какие-либо функции opencv, например & quot; cvHoughCircles () & quot; которые можно использовать для программирования обнаружения квадрата для программы обнаружения круга, котораяCvSeq* circles = cvHoughCircles() но я не смог найти квадратное обнаружение.

 ChathuraSam13 апр. 2014 г., 22:12
Обратитесь к этому:stackoverflow.com/questions/10533233/… Есть три или четыре подхода, которые вы можете попробовать по этой ссылке. Наслаждаться :)
 CTZStef13 июн. 2012 г., 15:33
И для этого вы будете использовать преобразование Хафа для линий, что также реализовано в OpenCV;)
 Rook13 июн. 2012 г., 14:48
Принимая во внимание, что обнаружение квадратов существенно проще, чем обнаружение окружностей, я не удивлюсь, если поиск квадратов был оставлен в качестве упражнения для кодировщика. В основном вам нужно найти длинные коллинеарные соединенные сегменты, которые пересекаются приблизительно под прямым углом, и вы можете генерировать эти сегменты, используя немного фильтрации и детектор краев. Большинство инструментов, которые вам нужно сделать, уже должны быть в OpenCV.

Ответы на вопрос(2)

Но вы можете использовать функцию houghLines, которая обнаруживает линии и находит пересечения между линиями с углами 90 градусов.

Для измерения углов между линиями я могу предоставить вам фрагмент кода Java:

// returns cosine of angle between line segments 0 to 1, and 0 to 2.
// pt0 is the vertex / intersection
// angle of 90 degrees will have a cosine == 0

public static final double angleCosine(Point pt1, Point pt0, Point pt2) {
    double dx1 = pt1.x - pt0.x;
    double dy1 = pt1.y - pt0.y;
    double dx2 = pt2.x - pt0.x;
    double dy2 = pt2.y - pt0.y;
    return (dx1 * dx2 + dy1 * dy2) / Math.sqrt((dx1 * dx1 + dy1 * dy1) * (dx2 * dx2 + dy2 * dy2) + 1e-10);
}

Документы о houghLines:

http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines

Решение Вопроса

ся с образцом обнаружения квадрата (который фактически обнаруживает прямоугольники, вы можете добавить ограничение, чтобы все стороны были равны по длине, чтобы получить квадрат).

Проверьте эту ссылку:squares.cpp

Есть хорошее объяснение того, как этот код работает в этом SOF:Как определить квадрат или прямоугольник с переменной длиной и шириной с помощью javacv?

Ниже приведен результат, который вы получите при применении этого кода.

enter image description here

 13 июн. 2012 г., 20:25
Вы должны изменить эти включения так, чтобы их путь указывал на место, где вы установили эти файлы. Это должен быть относительный путь, а не полный.
 26 июн. 2012 г., 16:20
если вы проверите, вы можете увидеть угол наклона с 3 точек. Вы можете найти расстояние между двумя последовательными точками. Или найдите ограничивающий прямоугольник или повернутый прямоугольник для квадрата. Это напрямую дает вам ширину и высоту. Но может ошибаться, если это не точный прямоугольник
 Thar198813 июн. 2012 г., 17:47
Bt, когда я пытаюсь запустить программу, это показывает 2 ошибки из-за#include "opencv2/core/core.hpp" и ** # include & opencv2 / imgproc / imgproc.hpp & quot; ** ///// Ошибка - фатальная ошибка C1083: Невозможно открыть включаемый файл: «opencv2 / core / core.hpp»: такого файла или каталога нет. Не могли бы вы сказать мне, как решить эту ошибку?
 26 июн. 2012 г., 11:43
Не могли бы вы объяснить, как рассчитать ширину и высоту этих идентифицированных полигонов?
 13 июн. 2012 г., 19:31
Извините, я не использую C ++. Может быть, задать его как отдельный вопрос, сказав, что ваш новый вопрос является продолжением этого вопроса.

Ваш ответ на вопрос