Это проблема с пространством имен

Это мой код, я получил от этого ссылка на сайт

    int main(int agrc, char **argv)
{
HaarClassifierCascade *p = 0;
MemStorage *pstore = 0;
Seq *Faceseq;
int i;

Mat test_sample = imread("1.jpg");
pstore = CreateMemStorage(0);
p = (HaarClassifierCascade *)Load(("/home/itachi/opencv-2.4.6/data/haarcascades/haarcascade_frontalface_default.xml"),0,0,0);
if( !test_sample || !pstore || !p)
{
printf("Initialization failed : %s \n",(!test_sample)? "didn't load image file" : (!p)? "didn't load Haar cascade --" "make sure path is correct" : "failed to allocate memory for data storage");
exit(-1);
}

Faceseq = HaarDetectObjects(test_sample,p,pstore,1.1,3,CV_HAAR_DO_CANNY_PRUNING,Size(0,0));
NamedWindow("Haar Window", CV_WINDOW_AUTOSIZE);

for(i=0;i<(Faceseq? Faceseq->total:0);i++)
{
Rect *r = (Rect*)GetSeqElem(Faceseq,i);
Point pt1 = { r->x, r->y };
Point pt2 = { r->x + r->width, r->y + r->height };
Rectangle(test_sample,pt1,pt2,CV_RGB(0,255,0),3,4,0);
}
ShowImage("Haar Window", CV_WINDOW_AUTOSIZE);
WaitKey(0);
DestroyWindow("Haar Window");

ReleaseImage(test_sample);
if(p) ReleaseHaarClassifierCascade(&p);
if(pstore) ReleaseMemStorage (&pstore);
}

Я пытаюсь этот код в моей новой системе, где я недавно установил OpenCV. Ранее, при использовании из моей старой системы, я обычно использовал такие функции, как ShowImage без резюме тег перед этим. но компиляция этого кода дает мне следующую ошибку:

    facedetecthaar.cpp:28:91: error: ‘HaarDetectObjects’ was not declared in this scope
facedetecthaar.cpp:29:47: error: ‘NamedWindow’ was not declared in this scope

И многое другое похоже на это. Если я добавлю Резюме перед этими функциями становится все нормально. Любая причина, почему это требуется? Это проблема пространства имен не работает? Пожалуйста, помогите мне здесь. Вопрос может быть действительно наивным, но я хочу знать, поэтому, пожалуйста, держись со мной. Это мой make-файл:

    LIBS=`pkg-config --libs opencv`
INCLUDE=`pkg-config --cflags opencv`Facedetect: facedetecthaar.o
g++ $^ -o $@ $(LIBS)

facedetecthaar.o: facedetecthaar.cpp
g++ -c $^ $(INCLUDE)

Спасибо заранее.

0

Решение

Используйте это вместо showImage
Это просто

// Open the window
cv::namedWindow("foo");

// Display the image m in this window
cv::imshow("foo", m);

И cvxxxx_xxx перед функциями являются частью имен функций, вы не должны удалять их.

Все эти функциональные возможности, которые начинаются с cv, устарели, и в новой версии openCV есть замены для всех из них, которые в некоторых случаях даже быстрее.

Вы можете увидеть полную разницу здесь:

http://opencv.willowgarage.com/documentation/index.html openCV 2.0

http://docs.opencv.org/index.html openCV 2.4

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector