【问题标题】:Rectangle not around detected eye pair矩形不在检测到的眼睛对周围
【发布时间】:2014-04-04 05:18:30
【问题描述】:

我正在使用 opencv 2.4.2 和 c++。关于检测眼睛对的矩形,我有一个小问题。该矩形不会出现在眼睛周围,而是出现在检测到的面部矩形之外。我想我可能没有得到正确的参数。

这是一段代码

for(int i=0;i<faces.size();i++){

        rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);

        Mat face  = frame(faces[i]);
        cvtColor(face,face,CV_BGR2GRAY);
        imwrite("C:/Users/DELL/Documents/Visual Studio 2010/Projects/Haarcascade/Haarcascade/fot.jpg",face);
        vector<Rect> eyes;
        eye.detectMultiScale(face,eyes);

        for( size_t j = 0; j < eyes.size(); j++ ){

            rectangle(frame,eyes[i],Scalar(255,0,0),4,8,0);

        }

}

有人可以帮忙吗?谢谢

【问题讨论】:

    标签: c++ opencv feature-detection haar-classifier


    【解决方案1】:

    您正在寻找从0face-&gt;width 以及从0face-&gt;height 的眼睛,因此您获得了相对于面部边界的眼睛坐标,然后在原始帧上绘制眼睛。您需要在框架中添加面部坐标,类似这样:

    Rect r(faces[i].x + eyes[i].x, faces[i].y + eyes[i].y, eyes[i].width,eyes[i].height );
    rectangle(frame,r,Scalar(255,0,0),4,8,0);
    

    【讨论】:

    • 矩形现在在眼睛周围:) 但是,矩形并没有完全停在眼睛的角落。有什么可以做的吗?
    • 你只在两只眼睛周围画了一个矩形?如果是这样,您需要相应地调整矩形的宽度和高度。建议你自己试试,不复杂。如果你不管理,请再次评论,我会帮助你
    • 实际上对于某些人脸图像,它会检测到正确的尺寸,而对于某些图像来说,它太大了。但无论如何,它可以工作,再次感谢
    • 如果你想要好的眼睛检测,你应该做一些预处理,实际上在现实世界中你应该只在面部的相关区域寻找眼睛。为了更好地理解我建议你阅读 MasteringOpenCv 第 8 章,这里是实现github.com/MasteringOpenCV/code/tree/master/…
    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2012-08-27
    • 2012-06-18
    • 1970-01-01
    • 2013-07-17
    • 2011-09-01
    • 2013-03-22
    • 2021-09-02
    相关资源
    最近更新 更多