OpenCV 文字檢測與識別模組

2021-09-10 19:01:43 字數 3335 閱讀 3521

opencv的文字檢測模組textdetectorcnn中使用了textboxes:具有單個深度神經網路的快速文字檢測器 鏈結位址為:

其中已經訓練過的檔案:

函式名內容

位址modelweightsfilename

描述分類器體系結構的prototxt檔案的相對或絕對路徑。

modelweightsfilename

包含caffe-binary形式的模型的預訓練權重的檔案的相對或絕對路徑。

textboxes_icdar13.caffemodel

cv::mat temp;

src.convertto(temp, cv_8uc3, 1);//src 輸入影象

cv::imshow("src", temp);

dst1 = temp.clone();

cv::ptrdetector= cv::text::textdetectorcnn::create("textbox.prototxt", "textboxes_icdar13.caffemodel");

std::vector < cv::rect > boxes;//識別區域

std::vector < float > sources;//評估分數

detector->detect(temp, boxes, sources);

float threshold = 0.5;

for (int i = 0; i < boxes.size(); i++)

}cv::imshow("text detection result", dst1);

原圖

結果

ocrholisticwordrecognizer類提供了分段詞語的功能。給定預定義的詞彙表,使用dictnet來選擇給定輸入影象的最可能的詞。

wordspotter = (cv::text::ocrholisticwordrecognizer::create("dictnet_vgg_deploy.prototxt", "dictnet_vgg.caffemodel", "dictnet_vgg_labels.txt"));

dst1 = src.clone();

for (size_t i = 0; i < textboxes.size(); i++)

cv::imshow("text recognition", dst1);

結果

與上方的卷積神經網路識別,存在識別不穩定的問題。

void textrecognize(int region_type,int grouping_algorithm)

// detect character groups

std::vector< std::vector> nm_region_groups;

textboxes.clear();

switch (grouping_algorithm)

/*text recognition (ocr)*/

int bottom_bar_height = src.rows / 7;

cv::copymakeborder(src, dst1, 0, bottom_bar_height, 0, 0, cv::border_constant, cv::scalar(150, 150, 150));

float scale_font = (float)(bottom_bar_height / 85.0);

std::vectordetections;//只有字型的

cv::mat temp;

src.convertto(temp, cv_8uc1, 1);

for (int i = 0; i < (int)textboxes.size(); i++)//字型的矩形數量

cv::imshow("text find", dst1);

std::vectoroutputs((int)detections.size());

std::vector< std::vector> boxes((int)detections.size());

std::vector< std::vector> words((int)detections.size());

std::vector< std::vector> confidences((int)detections.size());

float min_confidence1 = 0.f, min_confidence2 = 0.f;

min_confidence1 = 51.f;

min_confidence2 = 60.f;

// parallel process detections in batches of ocrs.size() (== num_ocrs)

for (int i = 0; i < (int)detections.size(); i = i + (int)num_ocrs)

showtext(outputs);

for (int i = 0; i < (int)detections.size(); i++)

}cv::imshow("result", dst1);

} void er_draw(std::vector&channels, std::vector> ®ions, std::vectorgroup, cv::mat& segmentation)

}} bool isrepetitive(const std::string& s)

if ((count > ((int)s.size() + 1) / 2) || (count2 == (int)s.size()) || (count3 > ((int)s.size() * 2) / 3))

return false;

}

原圖

文字定位圖

文字識別圖

opencv人臉識別,瞳孔檢測

include mainwindow.h include opencvcolordetector.h using namespace std using namespace cv cascadeclassifier face cascade,eyes cascade 該類沒有實現,只是在標頭檔案中有...

文字檢測與識別評價標準

多種文字檢測演算法效能對比及演算法介紹 evaluation protocols of icdar 2003 and 2005 定義m如下所示 其中area a b 即矩形a和b相交的面積 如圖中紅色部分 area a and b 代表the minimum bounding rectangle c...

文字識別 文字檢測資料集

1 chinese text in wild ctw 包含平面文字,凸起文字,城市文字,農村文字,低亮度文字,遠處文字,部分遮擋文字。影象大小2048 2048,資料集大小為31gb。8 1 1 比例訓練集 25887張影象,812872個漢字 測試集 3269張影象,103519個漢字 驗證集 3...