Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么haar cascade的opencv c++;_C++_Opencv_Haar Classifier - Fatal编程技术网

C++ 为什么haar cascade的opencv c++;

C++ 为什么haar cascade的opencv c++;,c++,opencv,haar-classifier,C++,Opencv,Haar Classifier,我正在使用haar级联检测正面人脸。我有以下代码: int main() { Mat image; cv::VideoCapture cap; cap.open(1); int frame_idx = 0; time_t fpsStartTime, fpsEndTime; time(&fpsStartTime); for (;;) { frame_idx = frame_idx + 1;

我正在使用haar级联检测正面人脸。我有以下代码:

int main()
{
    Mat image;

    cv::VideoCapture cap;
    cap.open(1); 

    int frame_idx = 0;
    time_t fpsStartTime, fpsEndTime;
    time(&fpsStartTime);
    for (;;)
    {
        frame_idx = frame_idx + 1;
        cap.read(image);

        CascadeClassifier face_cascade;
        face_cascade.load("<PATH");
        std::vector<Rect> faces;
        face_cascade.detectMultiScale(image, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, Size(30, 30));

        // Draw circles on the detected faces
        for (int i = 0; i < faces.size(); i++)
        {
            Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);

            ellipse(image, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
        }

        cv::imshow("Detected Face", image);
        char k = cv::waitKey(1);
        if (k == 27)
            break;

        time(&fpsEndTime);
        double seconds = difftime(fpsEndTime, fpsStartTime);
        double fps = frame_idx / seconds;
        std::string fps_txt = "FPS: " + std::to_string(fps);  // fps_str.str();
        cout << "FPS :  " << fps_txt << endl;

    }
    return 0;
}
intmain()
{
Mat图像;
cv::视频捕获帽;
第2章开放(1);
int frame_idx=0;
时间\u t fpsStartTime,fpsEndTime;
时间(&fpsStartTime);
对于(;;)
{
frame_idx=frame_idx+1;
阅读(图片);
层叠式分级机;
加载(“您不应该(重新)加载每一帧上的分类器。它应该在处理帧之前加载一次

将以下语句移出
for
循环

CascadeClassifier face_cascade;
face_cascade.load("<PATH");
cascade分类器面_cascade;

face_cascade.load(“能否确认您是否使用了正确的.lib和.dll文件

我已经检查并看到opencv_world440.lib和opencv_world440.dll与opencv_world440d.lib和opencv_world440d.dll文件相比,速度非常快。 我猜opencv_world440d.lib和opencv_world440d.dll用于调试速度如此之慢


注意:您的lib名称可能会有所不同,例如opencv_world.lib和opencv_world.lib

可能重复的haar级联分类器检测非常昂贵。OpenVINO针对intel硬件进行了高度优化,可能使用AVX指令(并可能减少输入大小)。您是否尝试过使用IPP的openCV?如果分辨率仍然足够大,您可以调整图像大小以降低计算复杂度。如果删除
cv::waitKey(1),速度是多少
imshow
?是的,我同意,但也没有太大的改进。我在调试模式下仍获得1-2fps,在发布模式下仍获得6-7fps。@SAndrew请在您的机器上运行我链接的演示,并将其FPS与您的进行比较。当我更改此项时,我收到许多“未解决的外部符号”错误。并且该项目无法构建