0

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

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

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

有什么解决办法吗?如果有人可以回答我的问题,我将不胜感激!

4

2 回答 2

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 当前支持的一组类中,那么这实际上不会是一项艰巨的任务。但请记住,总会有漏检和误报。

于 2013-10-14T12:42:42.500 回答
0

您可以使用Alturos.Yolo,它是yolo (darknet)的 ac# 包装器。根据预训练模型,您可以检测到许多不同的对象(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
}
于 2018-08-13T12:15:40.183 回答