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

📅 2026/7/25 21:34:11
OpenCV C++校正AI模型检测到的文本(OCR)
这个程序使用OpenCV校正AI模型检测到的文本方便后续识别这些文本。输入是《OpenCV C基于AI模型的场景文本检测(OCR)-CSDN博客》检测到的多边形这两个多边形很明显是倾斜的后续的识别模型无法识别这种倾斜的文本所以需要校正。程序运行后生成校正后的图片现在只关注英文的结果。这个图片太长了不利于识别所以把它分作三段把这三张图片用《OpenCV C基于AI模型的场景文本识别(OCR)-CSDN博客》里的程序识别就可以很轻松识别出来了detResults是场景文本检测输出的多边形代码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::vectorPoint 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::vectorPoint2f 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(); } }