2013-04-28 2 views
3

Кто-нибудь знает способ обнаружить капли с python cv opencv lib? Изначально я не хочу использовать внешнюю lib как cvBlobs.Обнаружение blob с python opencv

Я работаю на признании номерного знака и некоторые изображения обрабатываются как этот enter image description here

и хочет отделить капли поймать тарелку.

Я еще сделал это с помощью AForge в C#:

BlobCounterBase bc = new BlobCounter(); 
bc.FilterBlobs = true; 
bc.MinHeight = 5; 
bc.MinWidth = 5; 

bc.ProcessImage(bitmap); 
Blob[] blobs = bc.GetObjectsInformation(); 
for (int i = 0, n = blobs.Length; i < n; i++) 
{ 
    if (blobs.Length > 0) 
    {    
     bc.ExtractBlobsImage(bitmap, blobs[i], true); 
     Bitmap copy = blobs[i].Image.ToManagedImage(); 
     Console.WriteLine(blobs[i].Rectangle.Size.ToString()); 
     copy.Save("C:/Users/Marcilio/Desktop/segmentacao/" + i + ".jpg"); 
    } 
} 
bitmap.Save("C:/Users/Marcilio/Desktop/foto2.jpg"); 

А теперь мне нужен эквивалент OpenCV питона.

+0

привет Я также пытался узнать номерной знак. так что мне нужна помощь для обнаружения номерного знака, поэтому я могу помочь мне мою почту id = "[email protected]" – karnaf

ответ

7

OpenCV имеет функцию findContours, которая возвращает список контуров и их иерархию.

Как только у вас есть контуры, вы можете получить их моменты (например, рассчитать центроид), их области, их выпуклость и все остальное, что вам нужно.

Так что ваш код будет выглядеть примерно так (непроверенные):

contours, _ = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 
for c in contours: 
    rect = cv2.boundingRect(c) 
    if rect[2] < 5 or rect[3] < 5: continue 
    print cv2.contourArea(c) 
Смежные вопросы