任何人都知道用python cv opencv lib检测blob的方法吗?最初我不想使用外部lib作为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。
答案 0 :(得分: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)