有没有可用的对象检测/识别C#库?

时间:2013-10-14 06:04:33

标签: c# image-processing image-recognition

我正在开发一个需要在现实世界中调整对象的项目(如水果,椅子,笔记本,桌子,扬声器......等等)

我想问的第一件事是“有可能吗?”,我现在是信息技术大学的三年级学生

第二个是“是否有任何可用的C#库可以帮助我做到这一点?”

这有什么解决方案吗? 如果有人能回答我的问题,我将非常感激!

2 个答案:

答案 0 :(得分:0)

一般来说,这是一项非常艰巨的任务。请记住,设计一个完美的系统始终检测到对象并且不会产生任何错误(误报警),目前是不可能的。

您可以从使用OpenCV的潜在SVM检测器开始: http://docs.opencv.org/modules/objdetect/doc/latent_svm.html

但是,培训新模型存在问题。您还可以使用OpenCV HOG描述符和检测器:http://docs.opencv.org/modules/gpu/doc/object_detection.html

或级联分类器: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

您应该将自己限制为预定义的设置对象,并为每个对象类训练检测器。如果你可以将自己限制在OpenCV潜在的svm当前支持的类集中,那么它实际上并不是那么难的任务。但请记住,总会有错过的检测和误报。

答案 1 :(得分:0)

您可以使用Alturos.Yolo,它是yolo (darknet)的c#包装器。根据预先训练的模型,您可以检测到许多不同的对象(list of trained objects of Yolo9000)。如果需要更多种类,还可以训练自定义对象。

Nuget包

PM> install-package Alturos.Yolo

示例

var configurationDetector = new ConfigurationDetector();
var config = configurationDetector.Detect();
//using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
using (var yoloWrapper = new YoloWrapper(config))
{
    var items = yoloWrapper.Detect(@"image.jpg");
    //items[0].Type -> "Person, Car, ..."
    //items[0].Confidence -> 0.0 (low) -> 1.0 (high)
    //items[0].X -> bounding box
    //items[0].Y -> bounding box
    //items[0].Width -> bounding box
    //items[0].Height -> bounding box
}