gpt4 book ai didi

c++ - 使用 HOG 描述符进行人体检测

转载 作者:行者123 更新时间:2023-11-28 05:39:10 24 4
gpt4 key购买 nike

我是使用 HOG 检测器检测路上行人的新手,我已经编写了代码并尝试运行它,但它总是在这一行出现错误:“hog.setSVMDetector(HOGDescriptor: :getDefaultPeopleDetector());"这一行,任何人都可以告诉我我的代码有什么问题吗?

    #include < stdio.h>
#include < iostream>
#include < opencv2\opencv.hpp>
#include < opencv2/core/core.hpp>
#include < opencv2/highgui/highgui.hpp>
#include < opencv2/video/background_segm.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/objdetect.hpp>
#include <peopledetect.cpp>

using namespace cv;
using namespace std;

int main(int argc, const char * argv[])
{
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);

if (!cap.isOpened())
return -1;

Mat img;
namedWindow("opencv", CV_WINDOW_AUTOSIZE);
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

while (true)
{
cap >> img;
if (img.empty())
continue;

vector<Rect> found, found_filtered;
hog.detectMultiScale(img, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);
size_t i, j;
for (i = 0; i<found.size(); i++)
{
Rect r = found[i];
for (j = 0; j<found.size(); j++)
if (j != i && (r & found[j]) == r)
break;
if (j == found.size())
found_filtered.push_back(r);
}

for (i = 0; i<found_filtered.size(); i++)
{
Rect r = found_filtered[i];
r.x += cvRound(r.width*0.1);
r.width = cvRound(r.width*0.8);
r.y += cvRound(r.height*0.07);
r.height = cvRound(r.height*0.8);
rectangle(img, r.tl(), r.br(), Scalar(0, 255, 0), 3);
}

imshow("opencv", img);
waitKey(1);
}
return 0;
}

最佳答案

一般来说,您不应该在 C++ 程序中包含 .cpp 文件。有 .h 和 .hpp header 。

现在,对于您的特定问题,如果我们谈论的是相同的 peopledetect.cpp,您想要的功能未在此处定义,但在包含的 header 中......您可能已经有了正确的 header (objdetect.hpp ) 所以只需删除 #include <peopledetect.cpp>

关于c++ - 使用 HOG 描述符进行人体检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37547775/

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