opencv 15 OCR 文本检测(textdetection) vs2015

01 资源

OpenCV自带的OCR文本检测用例,opencv_contrib\modules\text\samples\textdetection.cpp。textdetection.cpp检测图片中文本。
模型文件(需要拷贝到Debug或Release目录中):

opencv_contrib/modules/text/samples/trained_classifierNM1.xml
opencv_contrib/modules/text/samples/trained_classifierNM2.xml

测试图片:

opencv_contrib/modules/text/samples/scenetext_segmented_word01.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word01_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word02.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word02_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word03.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word03_mask.png
...

02 编译textdetection

参考opencv01 相对完整的编译opencv3.3.0 win版本,编译opencv3.3.0 vs2015版本。
生成文件:D:\git\opencv\build\v3.3.0\x64\bin\Debug\text-example-textdetection.exe

03 textdetection项目配置

设置textdetection项目为启动项。

# 如果路径中有空格,需要使用双引号,参数路径根据自己实际情况调整
配置属性==>调试==>命令参数=../../../../../../opencv_contrib/modules/text/samples/scenetext_segmented_word03.jpg 
配置属性==>调试==>工作目录=$(OutDir)

04 运行结果

scenetext_segmented_word03.jpg原图:
运行结果:
这里写图片描述

你可以使用OpenCVText Detection模块来提取图片中的文字。这里是一个使用OpenCV和Tesseract OCR库的示例代码,可以进行文字检测和提取: ```cpp #include <opencv2/opencv.hpp> #include <opencv2/text.hpp> using namespace std; using namespace cv; using namespace cv::text; int main() { // 读取图像 Mat image = imread("image.jpg"); // 转换为灰度图像 Mat gray; cvtColor(image, gray, COLOR_BGR2GRAY); // 创建文本检测器 Ptr<OCRTesseract> ocr = OCRTesseract::create(); // 设置检测器的参数 ocr->setWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); // 定义文本区域检测器 Ptr<ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"), 16, 0.00015f, 0.13f, 0.2f, true, 0.1f); Ptr<ERFilter> er_filter2 = createERFilterNM2(loadClassifierNM2("trained_classifierNM2.xml"), 0.5); // 定义文本检测器 Ptr<ERFilter> er_filters[] = { er_filter1, er_filter2 }; vector<Mat> channels; computeNMChannels(gray, channels); Mat out_img; vector< vector<ERStat> > regions(channels.size()); for (int c = 0; c < channels.size(); c++) { er_filters[c]->run(channels[c], regions[c]); for (int i = 0; i < regions[c].size(); i++) { ERStat er = regions[c][i]; if (er.parent != NULL) continue; // 绘制文本区域 rectangle(image, er.rect, Scalar(0, 255, 0), 2); } } // 显示结果 imshow("Text Detection", image); waitKey(0); // 提取文本 string text; ocr->run(image, text); cout << "Extracted Text: " << text << endl; return 0; } ``` 请确保已安装OpenCV和Tesseract OCR库,并将图像路径替换为您要处理的图像路径。该代码将在图像上执行文本检测,并提取出检测到的文本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值