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();
        }
    }
}
相关推荐
Easy_API6 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo6 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
紧跟先前的步伐7 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
C^h7 小时前
c++ string
开发语言·c++
释厄6237 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
raindayinrain7 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的7 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao7 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
老金带你玩AI8 小时前
集万家所长,一键复制的Agent.md!
人工智能
ZhuoAIStage8 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体