Для примера выложу свой код, как удалять не нужные блобы(Rectangle) правда пока написано только на C#. Сначало рекомендуется вычислить угол поворота изображения. А потом уже удалять прямоугольники. Функция GetRect удаляет не нужные прямоугольники за линией (зеленой). IsPlate - проверяет гражданский ли автомобиль состоящий из 8 или 9 символов. Может быть поможет мой код.
p.s.Функция CLAHE - очень помогла на плохо освещенных номерах и переосвещенных.
public List<System.Drawing.Rectangle> GetRect(int i, List<System.Drawing.Rectangle> rec)
{
float sum = 0.0f;
for (int ij = 0; ij < rec.Count; ij++)
{
sum += rec[ij].Y + rec[ij].Height;
}
float sredY = sum / rec.Count;
Plate.rotate2.Draw(new LineSegment2DF(new System.Drawing.PointF(0, sredY), new System.Drawing.PointF(Plate.rotate2.Width, sredY)), new Bgr(System.Drawing.Color.Green), 2);
bool IsPlate(int i, List<System.Drawing.Rectangle> rect) { float sum = 0.0f; for (int ij = 0; ij < rect.Count; ij++) { sum += rect[ij].Y + rect[ij].Height; } float sredY = sum / rect.Count;
int index = 0; for (int kl = 0; kl < rect.Count; kl++) { if (System.Math.Abs(sredY - (rect[kl].Y + rect[kl].Height)) < 8) index++; }
Сегментация
in OpenCV
Posted · Report reply
Привет можно дайте мне исходник ?