Как использовать класс OpenCV GeneralizedHoughTransform с Python?

#python #opencv #cv2 #hough-transform

#python #opencv #cv2 #хаф-преобразование

Вопрос:

Я пытаюсь написать базовый пример использования класса GeneralizedHoughBallard с использованием OpenCV 3.4.1 и Python 3.7.1

Когда я пытаюсь создать новый экземпляр класса GeneralizedHoughBallard:

 import cv2
alg = cv2.createGeneralizedHoughBallard()
  

Я получаю сообщение об ошибке:

Ошибка атрибута: модуль ‘cv2.cv2’ не имеет атрибута ‘createGeneralizedHoughBallard’

Также я попытался показать все Хаф-методы:

 print([x for x in dir(cv2) if 'Hough' in x])
  

И результат: ['HoughCircles', 'HoughLines', 'HoughLinesP', 'HoughLinesPointSet']

Итак, у меня нет базовых функций. Как я могу его импортировать? Возможно ли это?

Ответ №1:

Кажется, в OpenCV 3.4.1 его нет. В OpenCV версии 4.0.X он вызывается GeneralizedHoughBallard . Возможно, вы захотите обновить свою версию OpenCV.

 python -m pip install --upgrade opencv-python
  

Проверка Хаф-методов:

 import cv2
print(cv2.__version__)
print([x for x in dir(cv2) if 'Hough' in x])
  

4.0.0.21

[‘GeneralizedHough’, ‘GeneralizedHoughBallard’, ‘GeneralizedHoughGuil’, ‘HoughCircles’, ‘HoughLines’, ‘HoughLinesP’, ‘HoughLinesPointSet’]

Комментарии:

1. Не могли бы вы помочь найти простой пример использования GeneralizedHoughGuil с python? Может быть, у вас есть один..

2. Вы имеете в виду GeneralizedHoughBallard ?

3. Мне просто нужно сделать простой поиск произвольных объектов, но я читал, что Guil() лучше. Я думаю, мне подойдет любой пример.

4. Взгляните на это и это . Я рекомендую вам открыть отдельный вопрос для этого, поскольку он отличается от вашего исходного сообщения.

Ответ №2:

Возможно, он не полностью поддерживается в Python, пожалуйста, проверьте это здесь ссылка на форум opencv

Но как-то можно это сделать, перестроив opencv и имея дело с CV_EXPORTS_W