我正在尝试在OpenCV-Python(cv2)中实现"数字识别OCR".它仅用于学习目的.我想在OpenCV中学习KNearest和SVM功能.
我有每个数字的100个样本(即图像).我想和他们一起训练.
letter_recog.pyOpenCV示例附带了一个示例.但我仍然无法弄清楚如何使用它.我不明白什么是样本,响应等.另外,它首先加载一个txt文件,我首先不明白.
稍后搜索一下,我可以在cpp示例中找到一个letter_recognition.data.我使用它并在letter_recog.py模型中为cv2.KNearest创建了一个代码(仅用于测试):
import numpy as np
import cv2
fn = 'letter-recognition.data'
a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') })
samples, responses = a[:,1:], a[:,0]
model = cv2.KNearest()
retval = model.train(samples,responses)
retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10)
print results.ravel()
Run Code Online (Sandbox Code Playgroud)
它给了我一个20000的数组,我不明白它是什么.
问题:
1)letter_recognition.data文件是什么?如何从我自己的数据集构建该文件?
2)什么results.reval()表示?
3)我们如何使用letter_recognition.data文件(KNearest或SVM)编写简单的数字识别工具?
我想从图像中检测文本区域作为tesseract OCR引擎的预处理步骤,当输入只是文本时引擎运行良好,但当输入图像包含非文本内容时它会下降,所以我想只检测图像中的文本内容,任何如何做到这一点的想法会有所帮助,谢谢.
我现在正在学习opencv代码簿中的代码(OpenCV 2计算机视觉应用程序编程手册):第5章,使用分水岭分割图像,第131页.
这是我的主要代码:
#include "opencv2/opencv.hpp"
#include <string>
using namespace cv;
using namespace std;
class WatershedSegmenter {
private:
cv::Mat markers;
public:
void setMarkers(const cv::Mat& markerImage){
markerImage.convertTo(markers, CV_32S);
}
cv::Mat process(const cv::Mat &image){
cv::watershed(image,markers);
return markers;
}
};
int main ()
{
cv::Mat image = cv::imread("/Users/yaozhongsong/Pictures/IMG_1648.JPG");
// Eliminate noise and smaller objects
cv::Mat fg;
cv::erode(binary,fg,cv::Mat(),cv::Point(-1,-1),6);
// Identify image pixels without objects
cv::Mat bg;
cv::dilate(binary,bg,cv::Mat(),cv::Point(-1,-1),6);
cv::threshold(bg,bg,1,128,cv::THRESH_BINARY_INV);
// Create markers image
cv::Mat markers(binary.size(),CV_8U,cv::Scalar(0));
markers= fg+bg;
// Create watershed segmentation object
WatershedSegmenter segmenter; …Run Code Online (Sandbox Code Playgroud) 我目前的项目涉及将 pdf 中的文本转录为文本文件,我首先尝试将图像文件直接放入 OCR 程序(tesseract)中,但效果不佳。原始图像文件基本上是旧报纸,并且有一些背景噪音,我相信 tesseract 有问题。所以我试图在将它输入 tesseract 之前使用一些图像预处理。有没有适合这种情况的开源图像预处理引擎的建议???以及如何使用它的说明将更加感激!