在facedetect程序中使用opencv和eclipse使用"CvHaarClassifierCascade*"
Using 'CvHaarClassifierCascade*' in facedetect program using opencv and eclipse
我正在尝试在eclipse中使用opencv2检测人脸。我正在使用以下程序进行相同的...
#include <cv.h>
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/core/core.hpp"
#include"opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
CvRect detectFaceInImage(IplImage *inputImg, CvHaarClassifierCascade* cascade);
String face_cascade_name = "src/haarcascade_frontalface_alt.xml";
CvHaarClassifierCascade* cascade;
int main(int argc, const char* argv[])
{
CvCapture* capture =0;
capture = cvCaptureFromCAM(0);
IplImage* inputImg=0;
if( !cascade.load( face_cascade_name ) ){ printf("--(!)Error loadingn"); return -1; };
while(true)
{
inputImg = cvQueryFrame(capture);
if(!inputImg) break;
namedWindow("My_capture",CV_WINDOW_AUTOSIZE);
CvRect outputImg;
outputImg = detectFaceInImage(inputImg, cascade);
}
return 0;
}
// Perform face detection on the input image, using the given Haar Cascade.
// Returns a rectangle for the detected region in the given image.
CvRect detectFaceInImage(IplImage *inputImg, CvHaarClassifierCascade* cascade)
{
// Smallest face size.
CvSize minFeatureSize = cvSize(20, 20);
// Only search for 1 face.
int flags = CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH;
// How detailed should the search be.
float search_scale_factor = 1.1f;
IplImage *detectImg;
IplImage *greyImg = 0;
CvMemStorage* storage;
CvRect rc;
double t;
CvSeq* rects;
CvSize size;
int ms, nFaces;
storage = cvCreateMemStorage(0);
cvClearMemStorage( storage );
// If the image is color, use a greyscale copy of the image.
detectImg = (IplImage*)inputImg;
if (inputImg->nChannels > 1)
{
size = cvSize(inputImg->width, inputImg->height);
greyImg = cvCreateImage(size, IPL_DEPTH_8U, 1 );
cvCvtColor( inputImg, greyImg, CV_BGR2GRAY );
detectImg = greyImg; // Use the greyscale image.
}
// Detect all the faces in the greyscale image.
t = (double)cvGetTickCount();
rects = cvHaarDetectObjects( detectImg, cascade, storage,search_scale_factor, 3, flags, minFeatureSize);
t = (double)cvGetTickCount() - t;
ms = cvRound( t / ((double)cvGetTickFrequency() * 1000.0) );
nFaces = rects->total;
printf("Face Detection took %d ms and found %d objectsn", ms, nFaces);
// Get the first detected face (the biggest).
if (nFaces > 0)
rc = *(CvRect*)cvGetSeqElem( rects, 0 );
else
rc = cvRect(-1,-1,-1,-1); // Couldn't find the face.
if (greyImg)
cvReleaseImage( &greyImg );
cvReleaseMemStorage( &storage );
//cvReleaseHaarClassifierCascade( &cascade );
return rc; // Return the biggest face found, or (-1,-1,-1,-1).
}
但是我收到此错误...
../src/test3.cpp:28:15: error: request for member ‘load’ in ‘cascade’, which is of non-class type ‘CvHaarClassifierCascade*’
我已经在源文件夹中添加了"haarcascade_frontalface_alt.xml"。当我将级联定义为级联分类器时,它显示一些兼容性错误。
我实际上是opencv的新手...所以请帮忙
请不要使用过时的c-API,它在不久的将来将不受支持。
在此处查找更新的版本
顺便说一句,如果你有一个指向某物的指针,你需要访问它:something->
,而不是something.
相关文章:
- 使用 Eclipse CDT 进行 Cplex 配置
- 如何使用 Eclipse 在 Git 中观察 CLion 项目
- 如何使用 Eclipse IDE 清除屏幕
- 在Ubuntu上使用Eclipse使用CGAL库16.04
- 在Ubuntu上使用Eclipse时,将新的第三方库与C 程序联系起来
- 我正在使用 Eclipse,为什么 #include 队列不起作用?
- 如何使用 Eclipse ubuntu 设置 SDL2
- 如何使用Eclipse CDT中的Google测试来管理测试输出
- 使用 Eclipse 检查 GCC 版本
- 如何始终使用Eclipse编译cpp文件
- 使用 Eclipse 和 minGW 的多个"could not be resolved"问题
- 如何在Ubuntu上使用Eclipse编译C++11
- 如何使用Eclipse for mac编译和运行C++程序
- 使用eclipse构建cocos2dios应用程序
- 使用 eclipse 创建 jar 文件时出现问题
- 使用eclipse在C++中读取openstreetmap XML文件
- 使用Eclipse的JNI解析错误
- 如何使用Eclipse Luna在CDT中使用构建/运行配置
- 如何使用eclipse来构建C++应用程序
- 使用 Eclipse CDT (Luna) 构建项目时出现问题