OpenCV C++校正AI模型检测到的文本(OCR)

这个程序使用OpenCV校正AI模型检测到的文本,方便后续识别这些文本。

输入是《OpenCV C++基于AI模型的场景文本检测(OCR)-CSDN博客》检测到的多边形:

这两个多边形很明显是倾斜的,后续的识别模型无法识别这种倾斜的文本,所以需要校正。

程序运行后生成校正后的图片:

现在只关注英文的结果。这个图片太长了,不利于识别,所以把它分作三段:

把这三张图片用《OpenCV C++基于AI模型的场景文本识别(OCR)-CSDN博客》里的程序识别,就可以很轻松识别出来了:

detResults是场景文本检测输出的多边形

代码:

cpp 复制代码
void fourPointsTransform(const Mat& frame, const Point2f vertices[], Mat& result)
{
    const Size outputSize = Size(100, 32);

    Point2f targetVertices[4] = {
        Point(0, outputSize.height - 1),
        Point(0, 0), Point(outputSize.width - 1, 0),
        Point(outputSize.width - 1, outputSize.height - 1)
    };
    Mat rotationMatrix = getPerspectiveTransform(vertices, targetVertices);

    warpPerspective(frame, result, rotationMatrix, outputSize);
}

int main(){
    if (detResults.size() > 0) {
        Mat recInput = frame;
           
        std::vector< std::vector<Point> > contours;
        for (uint i = 0; i < detResults.size(); i++){
            const auto& quadrangle = detResults[i];
            CV_CheckEQ(quadrangle.size(), (size_t)4, "");

            contours.emplace_back(quadrangle);

            std::vector<Point2f> quadrangle_2f;
            for (int j = 0; j < 4; j++)quadrangle_2f.emplace_back(quadrangle[j]);

            Mat cropped;
            fourPointsTransform(recInput, &quadrangle_2f[0], cropped);

            imshow("cropped",cropped);
            waitKey();
        }
    }
}
相关推荐
stereohomology2 小时前
Kimi K3编程实力远超GLM5.2:一个Trae复赛证据
人工智能·大模型·对比·why不coding
阳光是sunny2 小时前
LangGraph实战教程:状态管理与`graph.invoke`入参深度解析
前端·人工智能·后端
老猿AI洞察2 小时前
7月25日热点:马斯克说中国AI有望成为全球领导者,这次不是客套话
大数据·人工智能
AI_小站2 小时前
Loop Engineering又是啥?一文讲清企业Agent落地的四层工程进化论
java·人工智能·架构·prompt·大模型开发·智能体·大模型应用
BEOL贝尔科技2 小时前
还在担心样本的安全吗?如何制定有效的温湿度异常应急预案?
人工智能·安全
ysa0510302 小时前
【板子】二分答案(最大最小?)
c++·笔记·算法·板子
科技之门2 小时前
百公里管网漏损分级定位实战方案2026
前端·人工智能·算法
火山引擎开发者社区2 小时前
LLM Space 开源!任意组装 loop、tools、skills,顺手无痛“蒸馏” Kimi-K3
人工智能
zhishidi2 小时前
深度学习中的优化器
人工智能·深度学习