OpenCV C++提取文字
时间: 2023-08-25 21:07:45 浏览: 87
OpenCV 提供了一些强大的图像处理工具,可以用于文字提取。下面是一个简单的示例代码,演示了如何使用 OpenCV C++ 提取一张图像中的文本。
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像
Mat img = imread("text.png");
// 将图像转换为灰度图像
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 使用自适应阈值二值化图像
Mat binary;
adaptiveThreshold(gray, binary, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, 10);
// 定义矩形结构体,用于包围文本区域
Rect rect;
// 找到文本区域的轮廓
std::vector<std::vector<Point>> contours;
findContours(binary, contours, RETR_LIST, CHAIN_APPROX_SIMPLE);
// 遍历每个轮廓
for (const auto& contour : contours)
{
// 计算轮廓的包围矩形
rect = boundingRect(contour);
// 如果矩形较小,则忽略该轮廓
if (rect.width < 20 || rect.height < 20)
{
continue;
}
// 在原图上绘制矩形
rectangle(img, rect, Scalar(0, 255, 0), 2);
}
// 显示结果
imshow("Text Detection", img);
waitKey(0);
return 0;
}
```
这个示例代码首先将图像转换为灰度图像,然后使用自适应阈值二值化方法将图像转换为二进制图像。接下来,通过 findContours 函数找到文本区域的轮廓,并使用 boundingRect 函数计算每个轮廓的包围矩形。最后,在原图上绘制包围矩形,以可视化文本区域。
阅读全文