int test_plate_locate() { cout << "test_plate_locate" << endl; Mat src = imread("image/test.jpg"); vector<Mat> resultVec; CPlateLocate plate; plate.setDebug(1); plate.setLifemode(true); int result = plate.plateLocate(src, resultVec); if (result == 0) { int num = resultVec.size(); for (int j = 0; j < num; j++) { Mat resultMat = resultVec[j]; imshow("plate_locate", resultMat); waitKey(0); } destroyWindow("plate_locate"); } return result; }
int test_plate_judge() { cout << "test_plate_judge" << endl; Mat src = imread("image/plate_judge.jpg"); //可能是车牌的图块集合 vector<Mat> matVec; //经过SVM判断后得到的图块集合 vector<Mat> resultVec; CPlateLocate lo; lo.setDebug(1); lo.setLifemode(true); int resultLo = lo.plateLocate(src, matVec); if (0 != resultLo) return -1; cout << "plate_locate_img" << endl; if (resultLo == 0) { int num = matVec.size(); for (int j = 0; j < num; j++) { Mat resultMat = matVec[j]; imshow("plate_judge", resultMat); waitKey(0); } destroyWindow("plate_judge"); } CPlateJudge ju; int resultJu = ju.plateJudge(matVec, resultVec); if (0 != resultJu) return -1; cout << "plate_judge_img" << endl; if (resultJu == 0) { int num = resultVec.size(); for (int j = 0; j < num; j++) { Mat resultMat = resultVec[j]; imshow("plate_judge", resultMat); waitKey(0); } destroyWindow("plate_judge"); } return resultJu; }
static void plate_locate(const char* image, const bool life_mode = true) { cv::Mat src = cv::imread(image); _ASSERT(!src.empty()); CPlateLocate plate; plate.setDebug(1); plate.setLifemode(life_mode); std::vector<cv::Mat> results; plate.plateLocate(src, results); }
int plate_locatte_main(vector<Mat>& resultDT){ cout << "process plat_locatte_main..."; Mat src = imread(NATIVE_RECG_PATH+"/test.jpg"); CPlateLocate plate; plate.setDebug(OPTION_DEBUG); plate.setLifemode(OPTION_LIFEMODE); int result = plate.plateLocate(src, resultDT); if (result == 0) { int num = resultDT.size(); for (int j = 0; j < num; j++) { Mat resultMat = resultDT[j]; show_dialog(resultMat); } cout << "OK"; } cout << endl; return result; }
int test_plate_locate() { cout << "test_plate_locate" << endl; Mat src = imread(img_plate_locate); vector<Mat> resultVec; CPlateLocate plate; plate.setDebug(1); plate.setLifemode(true); vector<Mat> resultPlates; vector<CPlate> color_Plates; vector<CPlate> sobel_Plates; vector<CPlate> color_result_Plates; vector<CPlate> sobel_result_Plates; vector<CPlate> all_result_Plates; const int color_find_max = 4; plate.plateColorLocate(src, color_Plates); for (int i = 0; i<color_Plates.size(); ++i) color_result_Plates.push_back(color_Plates[i]); for (int i = 0; i< color_result_Plates.size(); i++) { CPlate plate = color_result_Plates[i]; all_result_Plates.push_back(plate); } //颜色和边界闭操作同时采用 { plate.plateSobelLocate(src, sobel_Plates); for (int i = 0; i<sobel_Plates.size(); ++i) { sobel_result_Plates.push_back(sobel_Plates[i]); } for (int i = 0; i< sobel_result_Plates.size(); i++) { CPlate plate = sobel_result_Plates[i]; plate.bColored = false; all_result_Plates.push_back(plate); } } for (int i = 0; i < all_result_Plates.size(); i++) { // 把截取的车牌图像依次放到左上角 CPlate plate = all_result_Plates[i]; Mat resultMat = plate.getPlateMat(); imshow("plate_locate", resultMat); waitKey(0); } destroyWindow("plate_locate"); /*int result = plate.plateLocate(src, resultVec); if (result == 0) { int num = resultVec.size(); for (int j = 0; j < num; j++) { Mat resultMat = resultVec[j]; imshow("plate_locate", resultMat); waitKey(0); } destroyWindow("plate_locate"); }*/ return 0; }