opencv detectMultiScale
Posted
技术标签:
【中文标题】opencv detectMultiScale【英文标题】: 【发布时间】:2016-01-02 07:26:33 【问题描述】:我正在尝试学习 opencv 和对象检测。我在 opencv 示例中使用了 objecdetection.cpp,当我运行它时出现此错误
级联加载非常好,而且相机唯一的问题是detectmultiscale,因为每当我将其注释掉时,程序都不会崩溃 这是objectdecetion2.cpp的代码
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
/** Function Headers */
void detectAndDisplay(Mat frame);
/** Global variables */
String face_cascade_name = "..\\Debug\\haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "..\\Debug\\haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
String window_name = "Capture - Face detection";
/**
* @function main
*/
int main(void)
VideoCapture capture;
Mat frame;
//-- 1. Load the cascade
if (!face_cascade.load(face_cascade_name)) printf("--(!)Error loading face cascade\n"); return -1; ;
if (!eyes_cascade.load(eyes_cascade_name)) printf("--(!)Error loading eyes cascade\n"); return -1; ;
//-- 2. Read the video stream
capture.open(0);
if (!capture.isOpened()) printf("--(!)Error opening video capture\n"); return -1;
while (capture.read(frame))
if (frame.empty())
printf(" --(!) No captured frame -- Break!");
break;
//-- 3. Apply the classifier to the frame
detectAndDisplay(frame);
//-- bail out if escape was pressed
int c = waitKey(10);
if ((char)c == 27) break;
return 0;
/**
* @function detectAndDisplay
*/
void detectAndDisplay(Mat frame)
std::vector<Rect> faces;
Mat frame_gray;
cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);
face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0, Size(80, 80));
imshow(window_name, frame);
【问题讨论】:
你不混合调试/发布 dll 吗? 混合调试/发布 dll 是什么意思? 【参考方案1】:您可能遇到了 OpenCV 错误,如下所述:http://code.opencv.org/issues/3710
您发布的代码在我看来还可以,否则。
【讨论】:
所以我应该把我的图像放大吗?【参考方案2】:您发布的代码是正确的!但是我怀疑你的opencv配置不对!如果您在 windows 上工作,请检查您的 .dll 文件和 lib 文件!
【讨论】:
我一步一步跟着这个视频介绍如何设置opencv youtube.com/watch?v=tHX3MLzwF6Q 是的,我知道,因为您的代码与 Opencv 示例代码相同。所以配置有问题。 你用过opencv 3.0.0吗? 没有,也许我以后会尝试opencv 2.4,我朋友说3.0有bug?是真的吗?以上是关于opencv detectMultiScale的主要内容,如果未能解决你的问题,请参考以下文章
cmake错误:opencv2/opencv.hpp:opencv2/opencv.hpp:没有这样的文件或目录