Skip to content

算法的改进 #4

Description

@zouj168

楼主您好:
拜读了ocr系列文章,收益颇大,在此感谢。
用您的这套代码我测试了一下,效果很不错,但发现有两个不足之处:
1. 大分辨率图片达不到预期效果。
2. 速度偏慢

   我做了一些改进:.先将原始图片先resize缩小保存。然后求出轮廓的4个顶点后,将顶点坐标原比例恢复,例如开始缩小为原图片0.2,此时顶点坐标乘以5得到4个顶点在原始图片上的坐标,然后在原始图片做最后变换,
   改进依据是求直线只需两点即可,改进后解决了以上问题。

    代码片段如下:
    1.
    double g_fMagnification = 5;
    double g_fMagnificine = 0.2;

    2.
    Mat buckup = src.clone();
    imshow("src img", src);
double scale=g_fMagnificine; 
Size dsize = Size(src.cols*scale,src.rows*scale);
resize(src, src,dsize);
    Mat source = src.clone();

   3.
         sortCorners(corners, center);
        cout << "corners size" << corners.size() << endl;
        cout << "tl:" << corners[0] << endl;
        cout << "tr:" << corners[1] << endl;
        cout << "br:" << corners[2] << endl;
        cout << "bl:" << corners[3] << endl;

     corners[0].x *=g_fMagnification;
     corners[1].x *=g_fMagnification;
     orners[2].x *=g_fMagnification;
     corners[3].x *=g_fMagnification;
     corners[0].y *=g_fMagnification;
     corners[1].y *=g_fMagnification;
     corners[2].y *=g_fMagnification;
     corners[3].y *=g_fMagnification;

         4.
         cv::Mat transmtx = cv::getPerspectiveTransform(corners, quad_pts);
        //cv::warpPerspective(source, quad, transmtx, quad.size());
    cv::warpPerspective(buckup, quad, transmtx, quad.size());

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions