| | |
| | | #include "RecognitionManager.h" |
| | | |
| | | |
| | | |
| | | RecognitionManager::RecognitionManager() { |
| | | openCLExcuter = new OpenCLExcuter(); |
| | | openCLExcuter->init(); |
| | | } |
| | | |
| | | RecognitionManager::~RecognitionManager() { |
| | | openCLExcuter->destory(); |
| | | } |
| | | |
| | | |
| | | TradeData RecognitionManager::recognition(cv::Mat img, int* rowData) { |
| | | TradeData tradeData = {}; |
| | | for (int index = 1;index < 8;index++) { |
| | |
| | | LogUtil::debug("识别结果:%s\n", st.c_str()); |
| | | |
| | | return st; |
| | | } |
| | | |
| | | list<uchar> RecognitionManager::recognitionGPCode(list<cv::Mat> imgList) { |
| | | |
| | | unsigned char* totalNumberData = (unsigned char*)malloc(sizeof(unsigned char) * (_NUMBER_GP_CODE_HEIGHT * 1) * _NUMBER_GP_CODE_WIDTH * 10 * imgList.size()); |
| | | list<cv::Mat>::iterator ele; |
| | | int i = 0; |
| | | for (ele= imgList.begin();ele!= imgList.end();++ele) |
| | | { |
| | | int index_2 = i * 10 * _NUMBER_GP_CODE_WIDTH; |
| | | for (int n = 0;n < 10;n++) |
| | | { |
| | | int index_3= n * _NUMBER_GP_CODE_WIDTH; |
| | | cv::Mat img = ImgUtil::formatNumGPCode(*ele); |
| | | |
| | | for (int r = 0;r < _NUMBER_GP_CODE_HEIGHT;r++) |
| | | { |
| | | int index_1 = r * imgList.size()* 10 * _NUMBER_GP_CODE_WIDTH; |
| | | for (int c = 0;c < _NUMBER_GP_CODE_WIDTH;c++) { |
| | | int index = index_1 + index_2+index_3 + c; |
| | | totalNumberData[index] = (img.ptr<uchar>(r)[c] >= _IMG_BINARY_THRESHOLD) ? 1 : 0; |
| | | } |
| | | } |
| | | } |
| | | i++; |
| | | } |
| | | |
| | | |
| | | uchar* templateNums = (unsigned char*)malloc(sizeof(unsigned char) * (_NUMBER_GP_CODE_HEIGHT * 1) * _NUMBER_GP_CODE_WIDTH * 10 * imgList.size()); |
| | | openCLExcuter->createNumberTemplates(1, _NUMBER_GP_CODE_WIDTH, _NUMBER_GP_CODE_HEIGHT, imgList.size(),ImgUtil::numsOneLevel_gpcode, templateNums); |
| | | |
| | | |
| | | |
| | | uchar** numberResult = openCLExcuter->recognition_numbers(totalNumberData, templateNums, 1 * _NUMBER_GP_CODE_HEIGHT, _NUMBER_GP_CODE_WIDTH * 10* imgList.size(), _NUMBER_GP_CODE_WIDTH, _NUMBER_GP_CODE_HEIGHT, imgList.size()); |
| | | list<uchar> resultList; |
| | | for (int i = 0;i < imgList.size();i++) { |
| | | uchar num= numberResult[0][i]; |
| | | resultList.push_back(num); |
| | | } |
| | | return resultList; |
| | | } |