【问题标题】:Can't use OpenCV GeneralizedHoughTransform class with Python不能在 Python 中使用 OpenCV GeneralizedHoughTransform 类
【发布时间】:2019-04-03 08:50:40
【问题描述】:

我正在尝试使用 OpenCV 4.0.0 和 Python 3.6 编写使用 GeneralizedHoughBallard 类的基本示例。我在这里找到了 C++ 的示例 https://github.com/opencv/opencv/blob/4.0.0/samples/gpu/generalized_hough.cpp,但没有找到 Python 的示例。

当我尝试创建 GeneralizedHoughBallard 类的新实例时:

import cv2
alg = cv2.createGeneralizedHoughBallard()

我收到错误:“AttributeError: module 'cv2.cv2' has no attribute 'createGeneralizedHoughBallard”。

我在 OpenCV 源代码 (https://github.com/opencv/opencv/blob/4.0.0/modules/imgproc/include/opencv2/imgproc.hpp) 中看到 createGeneralizedHoughBallard 是用 CV_EXPORTS 声明的,所以我想它应该可以与 Python 一起使用。我尝试使用在同一文件 (improc.hpp) 中声明的另一个类似函数,例如:cv2.createCLAHE() 并且工作正常。

可能是什么问题?

【问题讨论】:

    标签: python-3.x opencv hough-transform


    【解决方案1】:

    显然它只是叫GeneralizedHoughBallard

    import cv2
    print([x for x in dir(cv2) if 'Hough' in x])
    print([x for x in dir(cv2) if x.startswith('create')])
    
    ['GeneralizedHough',
     'GeneralizedHoughBallard',
     'GeneralizedHoughGuil',
     'HoughCircles',
     'HoughLines',
     'HoughLinesP',
     'HoughLinesPointSet']
    ['createAffineTransformer',
     'createAlignMTB',
     'createBackgroundSubtractorKNN',
     'createBackgroundSubtractorMOG2',
     'createButton',
     'createCLAHE',
     'createCalibrateDebevec',
     'createCalibrateRobertson',
     'createChiHistogramCostExtractor',
     'createEMDHistogramCostExtractor',
     'createEMDL1HistogramCostExtractor',
     'createHanningWindow',
     'createHausdorffDistanceExtractor',
     'createLineSegmentDetector',
     'createMergeDebevec',
     'createMergeMertens',
     'createMergeRobertson',
     'createNormHistogramCostExtractor',
     'createShapeContextDistanceExtractor',
     'createThinPlateSplineShapeTransformer',
     'createTonemap',
     'createTonemapDrago',
     'createTonemapDurand',
     'createTonemapMantiuk',
     'createTonemapReinhard',
     'createTrackbar']
    

    【讨论】:

    • 从您的回答和 opencv 论坛中的另一个 answers.opencv.org/question/211122/…> 中,我意识到要将函数公开给 Python 是必需的 CV_EXPORTS_W 而不是 CV_EXPORTS,而 createGeneralizedHoughBallard 使用最后一个。我想我必须更改代码并重新编译它。谢谢!
    猜你喜欢
    • 2019-09-10
    • 2020-05-20
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2016-10-09
    • 2015-04-28
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多