gpt4 book ai didi

c++ - iOS 上的 OpenCV 对象检测 (HOGDescriptor)

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:49 25 4
gpt4 key购买 nike

我正在尝试让 OpenCV 库提供的人员检测器运行。到目前为止,我在我的 iPhone 6 上获得了不错的性能,但检测非常糟糕,几乎从来没有正确过,我不太确定这是为什么,因为您可以找到使用相同默认 HOG 描述符的示例视频,检测效果更好。

代码如下:

- (void)processImage:(Mat&)image {
cv::Mat cvImg, result;
cvtColor(image, cvImg, COLOR_BGR2HSV);

cv::vector<cv::Rect> found, found_filtered;

hog.detectMultiScale(cvImg, found, 0, cv::Size(4,4), cv::Size(8,8), 1.5, 0);

size_t i;
for (i=0; i < found.size(); i++) {
cv::Rect r = found[i];
rectangle(image, r.tl(), r.br(), Scalar(0,255,0), 2);
}
}

视频输入来自 iPhone 摄像头本身,每一帧都会调用“processImage:”。对于 HOGDescriptor,我使用默认的人员检测器:

_hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());

我很感激任何帮助。 :)

最佳答案

我是 openCV 的新手,所以对此持保留态度:行 cvtColor(image, cvImg, COLOR_BGR2HSV);将图像从 BGR 颜色空间转换为 HSV 颜色空间。从本质上讲,它将每个像素从由其具有多少蓝色、绿色和红色表示,转变为由分量色调(颜色)、饱和度(多少颜色)和值(亮度)表示。显然,hogDescriptor 作用于 BGR 图像,而不是 HSV 图像。您需要向它传递一个 CV_8UC3 类型的图像:每个像素有 3 个 channel 的图像 (C3),例如。 BGR,以及每个 channel (8U)的一个8bit无符号数,这部分不太重要。您将什么传递给方法 processImage()?它应该是那些类型之一。如果不是,则需要知道类型并使用 cvtColor() 方法将其转换为 CV_8UC3

关于c++ - iOS 上的 OpenCV 对象检测 (HOGDescriptor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453385/

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