C# 向yolo(darknet)发送图像并接收对象位置和类型

C# 向yolo(darknet)发送图像并接收对象位置和类型,c#,pinvoke,yolo,C#,Pinvoke,Yolo,是否有可能将图像从C#发送到并接收所有检测到的对象位置和类型 例如在演示图像上 type | x | y | width | height ------------------------------------------- bicycle | 214 | 150 | 450 | 378 dog | 150 | 260 | 210 | 350 truck | 540 | 100 | 250 | 150 示例代码 public class

是否有可能将图像从C#发送到并接收所有检测到的对象位置和类型

例如在演示图像上

type      | x   | y   | width | height
-------------------------------------------
bicycle   | 214 | 150 | 450   | 378
dog       | 150 | 260 | 210   | 350
truck     | 540 | 100 | 250   | 150

示例代码

public class Yolo
{
    public ObjectPosition[] GetObjects(Image image)
    {
        //return yolo result
    }
}

public class ObjectPosition
{
    public string Type { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}
using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
{
    var items = yoloWrapper.Detect("image.jpg");
}

YOLO似乎没有公开用于检索结果和边界框的端点

如果您通读YOLO网页,您将看到,相反,在命令行中,它将返回带有对象和置信度评级的字符串,并且边界框(如演示预测图像中所示)实际上是输出到predictions.png文件。


我相信如果您想要这些边界框,您可能需要下载YOLO源代码并调整其控制台输出以返回这些值。

是的,您可以根据需要使用此nuget软件包。您在网站上找到的更多信息

安装依赖项

首先安装这两个NuGuT包,第一个是OpenCV和C++ YOLO项目的逻辑,第二个包含YOLO配置数据。

PM> install-package Alturos.Yolo
PM> install-package Alturos.YoloV2TinyVocData
代码示例

public class Yolo
{
    public ObjectPosition[] GetObjects(Image image)
    {
        //return yolo result
    }
}

public class ObjectPosition
{
    public string Type { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}
using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
{
    var items = yoloWrapper.Detect("image.jpg");
}

我用fork在windows上使用yolo。有yolo_cpp_dll和yolo_cpp_dll_no_gpu项目用于构建yolo dll。它的“detect”函数获取图像并返回检测集,每个都是结构:{x,y,w,h,prob,class_id}。还有一个从python使用此DLL的darknet.py示例。我不认为C语言会更难。

你有一个C语言的例子吗?不,我使用C++。嘿,在我的例子中,我使用OpenCV或OpenCVSpice,现在我想要一个面部识别OpenCV可以使用Haar级联分类器来检测人脸,并且边缘误差非常大。有人建议我使用深度学习,我希望yolo用于识别,opencv用于检测