mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 10:57:45 +08:00
perf: 优化飞桨接口调用
This commit is contained in:
2
3rdparty/VisionOCR
vendored
2
3rdparty/VisionOCR
vendored
Submodule 3rdparty/VisionOCR updated: 67991c4c0c...2d33b6c0ec
@@ -75,10 +75,13 @@ bool asst::OcrImageAnalyzer::analyze()
|
||||
m_roi.height = m_image.rows - m_roi.y;
|
||||
}
|
||||
|
||||
OcrPack* ocr_ptr = &WordOcr::get_instance();
|
||||
OcrPack* ocr_ptr = nullptr;
|
||||
if (m_use_char_model) {
|
||||
ocr_ptr = &CharOcr::get_instance();
|
||||
}
|
||||
else {
|
||||
ocr_ptr = &WordOcr::get_instance();
|
||||
}
|
||||
m_ocr_result = ocr_ptr->recognize(m_image, m_roi, all_pred, m_without_det);
|
||||
ocr_ptr = nullptr;
|
||||
|
||||
|
||||
@@ -93,27 +93,24 @@ std::vector<asst::TextRect> asst::OcrPack::recognize(const cv::Mat& image, const
|
||||
{
|
||||
size_t size = 0;
|
||||
|
||||
std::vector<uchar> buf;
|
||||
cv::imencode(".png", image, buf);
|
||||
|
||||
std::string type = utils::demangle(typeid(*this).name());
|
||||
std::string class_type = utils::demangle(typeid(*this).name());
|
||||
// 如果是带 ROI 的 cv::Mat, data 仍是指向完整的图片数据,仅通过内部的一些其他参数标识 ROI
|
||||
// 直接取 data 拿到的不是正确的图,所以拷贝一份出来
|
||||
cv::Mat copied = image.clone();
|
||||
if (!without_det) {
|
||||
Log.trace("Ocr System with", type);
|
||||
PaddleOcrSystem(m_ocr, buf.data(), buf.size(), false, m_boxes_buffer, m_strs_buffer, m_scores_buffer, &size,
|
||||
nullptr, nullptr);
|
||||
Log.trace("Ocr System with", class_type);
|
||||
PaddleOcrSystemWithData(m_ocr, copied.rows, copied.cols, copied.type(), copied.data, false, m_boxes_buffer,
|
||||
m_strs_buffer, m_scores_buffer, &size, nullptr, nullptr);
|
||||
}
|
||||
else {
|
||||
Log.trace("Ocr Rec with", type);
|
||||
PaddleOcrRec(m_ocr, buf.data(), buf.size(), m_strs_buffer, m_scores_buffer, &size, nullptr, nullptr);
|
||||
Log.trace("Ocr Rec with", class_type);
|
||||
PaddleOcrRecWithData(m_ocr, copied.rows, copied.cols, copied.type(), copied.data, m_strs_buffer,
|
||||
m_scores_buffer, &size, nullptr, nullptr);
|
||||
}
|
||||
|
||||
std::vector<TextRect> result;
|
||||
std::vector<TextRect> raw_result;
|
||||
|
||||
#ifdef ASST_DEBUG
|
||||
cv::Mat draw = image.clone();
|
||||
#endif
|
||||
|
||||
for (size_t i = 0; i != size; ++i) {
|
||||
// the box rect like ↓
|
||||
// 0 - 1
|
||||
@@ -135,7 +132,7 @@ std::vector<asst::TextRect> asst::OcrPack::recognize(const cv::Mat& image, const
|
||||
|
||||
TextRect tr { score, rect, text };
|
||||
#ifdef ASST_DEBUG
|
||||
cv::rectangle(draw, make_rect<cv::Rect>(rect), cv::Scalar(0, 0, 255), 2);
|
||||
cv::rectangle(copied, make_rect<cv::Rect>(rect), cv::Scalar(0, 0, 255), 2);
|
||||
#endif
|
||||
raw_result.emplace_back(tr);
|
||||
if (trim) {
|
||||
|
||||
Reference in New Issue
Block a user