Пример #1
0
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;
}