diff --git a/deploy/cpp_infer/include/postprocess_op.h b/deploy/cpp_infer/include/postprocess_op.h index 108003ccafa6ad8cbf213de5bf3b2f106c40a4e5..b384b79b3041bfcb96f042c6450d3c6e54f00498 100644 --- a/deploy/cpp_infer/include/postprocess_op.h +++ b/deploy/cpp_infer/include/postprocess_op.h @@ -30,7 +30,6 @@ #include "include/clipper.h" #include "include/utility.h" - using namespace std; namespace PaddleOCR { diff --git a/deploy/cpp_infer/include/utility.h b/deploy/cpp_infer/include/utility.h index 443e97511d4b2e14fd918cdb372b02b7d850a8d4..6e8173e007279319657250b376de022240bc6f62 100644 --- a/deploy/cpp_infer/include/utility.h +++ b/deploy/cpp_infer/include/utility.h @@ -20,8 +20,6 @@ #include #include #include -#include -#include #include #include @@ -36,42 +34,11 @@ namespace PaddleOCR { class Utility { public: - static std::vector ReadDict(const std::string &path) { - std::ifstream in(path); - std::string line; - std::vector m_vec; - if (in) { - while (getline(in, line)) { - m_vec.push_back(line); - } - } else { - std::cout << "no such label file: " << path << ", exit the program..." - << std::endl; - exit(1); - } - return m_vec; - } - + static std::vector ReadDict(const std::string &path); + static void VisualizeBboxes(const cv::Mat &srcimg, - const std::vector>> &boxes) { - cv::Mat img_vis; - srcimg.copyTo(img_vis); - for (int n = 0; n < boxes.size(); n++) { - cv::Point rook_points[4]; - for (int m = 0; m < boxes[n].size(); m++) { - rook_points[m] = cv::Point(int(boxes[n][m][0]), int(boxes[n][m][1])); - } - - const cv::Point *ppt[1] = {rook_points}; - int npt[] = {4}; - cv::polylines(img_vis, ppt, npt, 1, 1, CV_RGB(0, 255, 0), 2, 8, 0); - } - - cv::imwrite("./ocr_vis.png", img_vis); - std::cout << "The detection visualized image saved in ./ocr_vis.png" - << std::endl; - } + const std::vector>> &boxes); template inline static size_t argmax(ForwardIterator first, ForwardIterator last) { @@ -79,36 +46,7 @@ public: } static void GetAllFiles(const char *dir_name, - std::vector &all_inputs) { - if (NULL == dir_name) { - std::cout << " dir_name is null ! " << std::endl; - return; - } - struct stat s; - lstat(dir_name, &s); - if (!S_ISDIR(s.st_mode)) { - std::cout << "dir_name is not a valid directory !" << std::endl; - all_inputs.push_back(dir_name); - return; - } else { - struct dirent *filename; // return value for readdir() - DIR *dir; // return value for opendir() - dir = opendir(dir_name); - if (NULL == dir) { - std::cout << "Can not open dir " << dir_name << std::endl; - return; - } - std::cout << "Successfully opened the dir !" << std::endl; - while ((filename = readdir(dir)) != NULL) { - if (strcmp(filename->d_name, ".") == 0 || - strcmp(filename->d_name, "..") == 0) - continue; - // img_dir + std::string("/") + all_inputs[0]; - all_inputs.push_back(dir_name + std::string("/") + - std::string(filename->d_name)); - } - } - } + std::vector &all_inputs); }; } // namespace PaddleOCR \ No newline at end of file diff --git a/deploy/cpp_infer/src/utility.cpp b/deploy/cpp_infer/src/utility.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2cd84f7e8dbdd8144b5337f55b3f3a62ed43d5b3 --- /dev/null +++ b/deploy/cpp_infer/src/utility.cpp @@ -0,0 +1,95 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include +#include +#include +#include +#include + +namespace PaddleOCR { + +std::vector Utility::ReadDict(const std::string &path) { + std::ifstream in(path); + std::string line; + std::vector m_vec; + if (in) { + while (getline(in, line)) { + m_vec.push_back(line); + } + } else { + std::cout << "no such label file: " << path << ", exit the program..." + << std::endl; + exit(1); + } + return m_vec; +} + +void Utility::VisualizeBboxes( + const cv::Mat &srcimg, + const std::vector>> &boxes) { + cv::Mat img_vis; + srcimg.copyTo(img_vis); + for (int n = 0; n < boxes.size(); n++) { + cv::Point rook_points[4]; + for (int m = 0; m < boxes[n].size(); m++) { + rook_points[m] = cv::Point(int(boxes[n][m][0]), int(boxes[n][m][1])); + } + + const cv::Point *ppt[1] = {rook_points}; + int npt[] = {4}; + cv::polylines(img_vis, ppt, npt, 1, 1, CV_RGB(0, 255, 0), 2, 8, 0); + } + + cv::imwrite("./ocr_vis.png", img_vis); + std::cout << "The detection visualized image saved in ./ocr_vis.png" + << std::endl; +} + +// list all files under a directory +void Utility::GetAllFiles(const char *dir_name, + std::vector &all_inputs) { + if (NULL == dir_name) { + std::cout << " dir_name is null ! " << std::endl; + return; + } + struct stat s; + lstat(dir_name, &s); + if (!S_ISDIR(s.st_mode)) { + std::cout << "dir_name is not a valid directory !" << std::endl; + all_inputs.push_back(dir_name); + return; + } else { + struct dirent *filename; // return value for readdir() + DIR *dir; // return value for opendir() + dir = opendir(dir_name); + if (NULL == dir) { + std::cout << "Can not open dir " << dir_name << std::endl; + return; + } + std::cout << "Successfully opened the dir !" << std::endl; + while ((filename = readdir(dir)) != NULL) { + if (strcmp(filename->d_name, ".") == 0 || + strcmp(filename->d_name, "..") == 0) + continue; + // img_dir + std::string("/") + all_inputs[0]; + all_inputs.push_back(dir_name + std::string("/") + + std::string(filename->d_name)); + } + } +} + +} // namespace PaddleOCR \ No newline at end of file