3

任何人都知道用python cv opencv lib检测blob的方法吗?最初我不想将外部库用作 cvBlobs。

我正在研究车牌识别,并处理了一些图像在此处输入图像描述

并希望将斑点分开以接住盘子。

我还没有在 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 回答