3

python cv opencv libでブロブを検出する方法を知っている人はいますか? 最初は、外部ライブラリを cvBlob として使用したくありません。

私はナンバープレートの認識に取り組んでおり、そのように処理された画像がいくつかありますここに画像の説明を入力

ブロブを分離してプレートをキャッチします。

私はまだ C# で AForge を使用して作成しています。

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");

そして今、python の opencv に相当するものが必要です。

4

1 に答える 1

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)
于 2013-08-09T22:53:37.587 に答える