【问题标题】:Skew detection Opencv Android OCR偏斜检测 Opencv Android OCR
【发布时间】:2014-05-26 10:50:57
【问题描述】:

我正在开发一个 OCR Android 应用程序,它在图像处理部分使用 NDK 和 C++。 为了理解倾斜,我使用霍夫变换并根据从它返回的角度进行旋转。

它提供了可靠的结果,但即使我使用 NDK 来加速我的应用程序,它也需要很长时间。我想问是否有人建议我可以使用更快的算法?

【问题讨论】:

  • 计算偏斜需要多长时间?也许您只能偶尔执行一次计算,而不是 15 FPS?此外,对于预览,您可以指示 OpenGL 显示校正后的图像,而无需在 CPU 上运行旋转。

标签: android opencv android-ndk hough-transform


【解决方案1】:

我认为这两个链接可以帮助你

Detect skew angle

rotation

【讨论】:

    【解决方案2】:

    通过对结果点进行腐蚀和装箱,可以计算出角度:

        cv::Mat img = cv::imread(filename, 0);
        .
        .
        .
        cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 3));
        cv::erode(img, img, element);
    
        std::vector<cv::Point> points;
        cv::Mat_<uchar>::iterator it = img.begin<uchar>();
        cv::Mat_<uchar>::iterator end = img.end<uchar>();
    
        for (; it != end; ++it)
           if (*it)
              points.push_back(it.pos());
    
        cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));
    
        double angle = box.angle;
        if (angle < -45.)
           angle += 90.;
    

    OpenCV Bouding Box & Skew Angle

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2015-10-13
      相关资源
      最近更新 更多