微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用python opencv进行Blob检测

有人知道用 python cv opencv lib检测blob的方法吗?最初我不想使用外部lib作为cvBlobs.

正在进行车牌识别并且有一些处理过的图像

并希望将blob分开来抓住盘子.

我已经在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.

解决方法

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐