#include #include "easypr.h" using namespace easypr; static std::vector plate_recognize_self(const char* image, const char* model_svm, const char* model_ann, const bool life_mode = true) { cv::Mat img = cv::imread(image); assert(!img.empty()); CPlateRecognize pr; pr.setResultShow(false); pr.setLifemode(true); pr.setMaxPlates(1); pr.setDetectType(PR_DETECT_CMSER | PR_DETECT_COLOR); std::vector results; std::vector plates; pr.plateRecognize(img, plates, 0); for (auto plate : plates) { results.push_back(plate.getPlateStr()); results.push_back(std::to_string(plate.getPlatePos().center.x)); results.push_back(std::to_string(plate.getPlatePos().center.y)); results.push_back(std::to_string(plate.getPlatePos().size.width)); results.push_back(std::to_string(plate.getPlatePos().size.height)); } if (plates.size() == 1) { if (1) { std::stringstream ss(std::stringstream::in | std::stringstream::out); ss << "result.jpg"; imwrite(ss.str(), plates.at(0).getPlateMat()); } } return std::move(results); } char* wrap_for_python_plate_recognize(const char* image, const char* model_svm, const char* model_ann, const int life_mode) { std::vector results= plate_recognize_self(image, model_svm, model_ann, life_mode); std::string str = "nil"; if(! results.empty()) { std::ostringstream oss; for (std::vector::const_iterator it = results.begin(); it != results.end(); it ++) oss << (*it) << "$"; str = oss.str(); } char *ret = new char[str.length() + 1]; strcpy(ret, str.c_str()); return ret; } int main() { const char* image = "./test.jpg"; wrap_for_python_plate_recognize(image, "", "", 0) return 0; }