gpt4 book ai didi

java - OpenCV HOGDescriptor 在静态图像中返回错误结果

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:32 27 4
gpt4 key购买 nike

我正在尝试使用 Android 中的 OpenCV HOGDescriptor 检测静态图像中是否存在人体。

这里是Android java代码,我在网上找不到Android中的示例,我尝试将peopledetect.cpp中的C++示例移植到它。

mHOGDescriptor = new HOGDescriptor();
mHOGDescriptor.setSVMDetector(HOGDescriptor.getDefaultPeopleDetector());
Mat img = Highgui.imread(path);
final MatOfRect foundLocations = new MatOfRect();
final MatOfDouble foundWeights = new MatOfDouble();
final Size winStride = new Size(8, 8);
final Size padding = new Size(32, 32);

mHOGDescriptor.detectMultiScale(img, foundLocations, foundWeights, 0.0, winStride, padding, 1.05, 2.0, false);
Boolean withFace = false;
Rect[] array = foundLocations.toArray();
for (int j = 0; j < array.length; j++) {
Rect rect = array[j];
Log.i("TEST", "Height " + rect.height + ", Width " + rect.width);
}

当我再次测试一小部分 30 张照片时,我注意到误报的数量非常高。一些没有明显人物特征的照片也被标记为人物。 (在上面的foundLocation数组中,矩形的高度和宽度都相当高)。例如,一张有几朵花的照片被标记为里面有 2 个人。很明显是错误的。

我可以做些什么来改进它吗?

最佳答案

简短的回答是,是的,有。

如果我理解正确的话,您已经在 30 张照片上训练了描述符?这是一个非常低的数字,通过增加训练数据量会增加检测次数。

<小时/>

以防万一,您的意思是您正在测试在 C++ 代码中使用的相同描述符,并且可以正常工作,那么这里有一个稍微不同的答案。

特征检测是一件非常难以掌握的事情,即使使用非常好的 HOG 检测器,您也可能会得到很多误报。你没有提到你的真实阳性率如何,我认为它还不错。想象一下,一朵花在被训练来检测人类的东西面前是什么样子,它是一个细长的东西,顶部有一个大圆圈;和一个人很相似...

关于java - OpenCV HOGDescriptor 在静态图像中返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com