如何在C#中检测图像中的对象?

时间:2019-07-08 13:06:57

标签: c# python opencv object-detection yolo

我正在构建一个C#项目来检测图像中的所有对象,我不希望它检测到这些对象是什么,我只希望它检测图像中对象的位置。

我尝试了许多方法来完成此操作,例如this(使用imageai python库,然后我在c#中使用了此脚本)和this(使用Alturos.Yolo库)教程,但是这些教程可以检测到仅已知对象,但如果不知道该对象是什么,则不会检测到该对象的位置。

我需要的是检测对象的位置,无论它是否识别出此对象。

例如这张图片

image

它检测到唯一能够识别其类型的对象,但我希望它检测图像中的所有对象。

python代码:

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = 
detector.detectObjectsFromImage(input_image=os.path.join(execution_path , rel_path ,file_name), output_image_path=os.path.join(execution_path ,new_file_name))
for eachObject in detections:
    print(eachObject["name"] , " : " , eachObject["percentage_probability"] ," : "  ,eachObject["box_points"]  )

使用Alturos.Yolo库代码:

var configurationDetector = new ConfigurationDetector();
var config = configurationDetector.Detect();

using (var yoloWrapper = new YoloWrapper(config))
{
    using (MemoryStream ms = new MemoryStream())
    {
        pictureBox1.Image.Save(ms, ImageFormat.Png);
        var items = yoloWrapper.Detect(ms.ToArray());
        yoloItemBindingSource.DataSource = items;
        arr = items.ToArray();
    }
}

任何人都可以帮忙或推荐其他方式吗?

1 个答案:

答案 0 :(得分:0)

Here是一个类似的问题,其中的一些答案可能会对您有所帮助。我找到了一些选项:

AForge.Net

一些方法:

* ColorFiltering
* ChannelFiltering
* HSLFiltering
* YCbCrFiltering
* EuclideanColorFiltering

OpenCV