// // Created by 庾金科 on 20/09/2017. // #ifndef SWIFTPR_PLATEINFO_H #define SWIFTPR_PLATEINFO_H #include namespace pr { typedef std::vector Character; enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; enum CharType {CHINESE,LETTER,LETTER_NUMS}; class PlateInfo { public: std::vector > plateChars; std::vector > plateCoding; float confidence = 0; PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) { licensePlate = plateData; name = plateName; ROI = plateRect; Type = plateType; } PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) { licensePlate = plateData; ROI = plateRect; Type = plateType; } PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) { licensePlate = plateData; ROI = plateRect; } PlateInfo() { } cv::Mat getPlateImage() { return licensePlate; } void setPlateImage(cv::Mat plateImage){ licensePlate = plateImage; } cv::Rect getPlateRect() { return ROI; } void setPlateRect(cv::Rect plateRect) { ROI = plateRect; } cv::String getPlateName() { return name; } void setPlateName(cv::String plateName) { name = plateName; } int getPlateType() { return Type; } void appendPlateChar(const std::pair &plateChar) { plateChars.push_back(plateChar); } void appendPlateCoding(const std::pair &charProb){ plateCoding.push_back(charProb); } // cv::Mat getPlateChars(int id) { // if(id mappingTable) { std::string decode; for(auto plate:plateCoding) { float *prob = (float *)plate.second.data; if(plate.first == CHINESE) { decode += mappingTable[std::max_element(prob,prob+31) - prob]; confidence+=*std::max_element(prob,prob+31); // std::cout<<*std::max_element(prob,prob+31)<