Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 07:06   #21
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Получилось запустить готовый пример из мануала, но при дебагинге ничего не происходит. Программа заканчивается с кодом 0, невозможно открыть кучу файлов PDB. Там есть в описании ошибок Haar Cascade files.


Сделал в параметрах загрузку символов, затем заменил строчки, указав точный адрес:
C:\OpenCV2.2\data\haarcascades. Не помогает, пустая консоль!


ВОО. После пытаний проект работает, но не видно видео, пустое окно приложения и записывает логи detecting time

Последний раз редактировалось Krasi; 13.09.2012 в 07:39.
Krasi вне форума Ответить с цитированием
Старый 13.09.2012, 09:05   #22
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

видимо, проблема с haarcascades. В стандартном проекте возвращается (-1), посмотрел - это если фигня с каскадами. Уже всяко пробовал прописать путь - никак не помогает. Какая это может быть ошибка, либо как попробовать прописать директорию к хаар?
Krasi вне форума Ответить с цитированием
Старый 13.09.2012, 09:55   #23
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

копируете директорию haarcascades из папки opencv\data\ в папку с программой (где находится непосредственно файл *.exe вашей программы), путь к ней в исходниках меняете с

Код:
const String haarcascade_face = "../Haarcascades/haarcascade_frontalface_alt.xml";
const String haarcascade_eye ="../Haarcascades/haarcascade_eye_tree_eyeglasses.xml";
на
Код:
const String haarcascade_face = "./haarcascades/haarcascade_frontalface_alt.xml";
const String haarcascade_eye = "./haarcascades/haarcascade_eye_tree_eyeglasses.xml";
это если вы пытаетесь запустить пример на который я ранее дал вам ссылку
ultimatet41 вне форума Ответить с цитированием
Старый 13.09.2012, 13:34   #24
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Поменял. В общем, не знаю, что сделал такого, но у сейчас у меня такое положение событий: при запуске появляется 2 окна, в одном источник видео. Нажимаю "ОК", открывается пустое новое окно на доли сек, затем выходит из программы сразу. Что это примерно хоть?
Krasi вне форума Ответить с цитированием
Старый 13.09.2012, 15:22   #25
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Выложите исходники вашего творения, так как по другому помочь вам практически не возможно (если конечно на форуме нет экстрасенса).
ultimatet41 вне форума Ответить с цитированием
Старый 13.09.2012, 16:45   #26
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Дык прикол в том, что я делаю все по мануалу, который вы выложили. Просто то ли настолько руки косые... Вот сейчас все удалил нафиг и провел установку номер 2, так у меня линкер ругается, что на какие-то внешние источники ссылаться нельзя. Хотя ошибок при сборке библиотеки, вроде, не было. А это на Windows7 работает? Я еще все запускаю от имени администратора, но может ограничения в правах все-равно как-то мешают?
Krasi вне форума Ответить с цитированием
Старый 13.09.2012, 17:44   #27
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

так тогда давайте поступим так, скиньте скриншоты ваших настроек vc2010 и напишите адрес расположения opencv на вашем компе, а я попробую разобраться в чём дело.
ultimatet41 вне форума Ответить с цитированием
Старый 14.09.2012, 03:08   #28
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

1. Библиотеку установил сейчас в C:\Program Files.
2. CMake скомпилил, вроде, без ошибок, конфигурировал, пока не исчезнут красные опции.
3. Залил проект на рабочий стол и компилю. Код до конца, я думаю, так должно работать точно:

Последний раз редактировалось Krasi; 14.09.2012 в 03:17.
Krasi вне форума Ответить с цитированием
Старый 14.09.2012, 03:13   #29
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Код:
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>

using namespace std;
using namespace cv;


const String haarcascade_face = "C:/Program Files/OpenCV2.2/data/Haarcascades/haarcascade_frontalface_alt.xml";
const String haarcascade_eye = "C:/Program Files/OpenCV2.2/data/Haarcascades/haarcascade_eye_tree_eyeglasses.xml";

const double scale = 3.0;  //1.0 for 1:1 processing. use bigger number to increase the speed


void detectAndDraw( Mat& img,
                   CascadeClassifier& cascade, CascadeClassifier& nestedCascade,
                   double scale);


void main (){
	
	
	CascadeClassifier cascade_face, cascade_eye;

	CvCapture* capture = 0;
	Mat frame, frameCopy, image;
 
	//load cascade file for face detection
	if(!cascade_face.load(haarcascade_face)){
		cerr << "ERROR: Could not load classifier cascade" << endl;
		return;
	}	

	//load cascade file for eye detection
	if(!cascade_eye.load(haarcascade_eye)){
		cerr << "ERROR: Could not load classifier cascade" << endl;
		return;
	}
	
	//capture camera image
	capture = cvCaptureFromCAM(0);

	//create window
	cvNamedWindow("result", 1);  //arg2 = 1 for autosize

	//process captured image
	if( capture )
    {
    	cout << "In capture ..." << endl;
        for(;;)
        {
            IplImage* iplImg = cvQueryFrame( capture );
            frame = iplImg;
            if( frame.empty() )
                break;
            if( iplImg->origin == IPL_ORIGIN_TL )
                frame.copyTo( frameCopy );
            else
                flip( frame, frameCopy, 0 );

            detectAndDraw( frameCopy, cascade_face, cascade_eye, scale );

            if( waitKey( 10 ) >= 0 )	//wait for 10msec before processing next frame
										//if the key entry is detected, it will break from the loop
                goto _cleanup_;
        }

        waitKey(0);
_cleanup_:
        cvReleaseCapture( &capture );
    }
}


void detectAndDraw( Mat& img,
                   CascadeClassifier& cascade, CascadeClassifier& nestedCascade,
                   double scale)
{
    int i = 0;
    double t = 0;
    vector<Rect> faces;
    const static Scalar colors[] =  { CV_RGB(0,0,255),
        CV_RGB(0,128,255),
        CV_RGB(0,255,255),
        CV_RGB(0,255,0),
        CV_RGB(255,128,0),
        CV_RGB(255,255,0),
        CV_RGB(255,0,0),
        CV_RGB(255,0,255)} ;

    Mat gray, smallImg( cvRound (img.rows/scale), cvRound(img.cols/scale), CV_8UC1 );

    cvtColor( img, gray, CV_BGR2GRAY );
    resize( gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR );
    equalizeHist( smallImg, smallImg );

    t = (double)cvGetTickCount();
    cascade.detectMultiScale( smallImg, faces,
        1.1, 2, 0
        //|CV_HAAR_FIND_BIGGEST_OBJECT
        //|CV_HAAR_DO_ROUGH_SEARCH
        |CV_HAAR_SCALE_IMAGE
        ,
        Size(30, 30) );
    t = (double)cvGetTickCount() - t;
    
	printf( "detection time = %g ms\n", t/((double)cvGetTickFrequency()*1000.) );


	
    for( vector<Rect>::const_iterator r = faces.begin(); r != faces.end(); r++, i++ )
    {
        Mat smallImgROI;
        vector<Rect> nestedObjects;
        Point center;
        Scalar color = colors[i%8];
        int radius;
        center.x = cvRound((r->x + r->width*0.5)*scale);
        center.y = cvRound((r->y + r->height*0.5)*scale);
        radius = cvRound((r->width + r->height)*0.25*scale);
        circle( img, center, radius, color, 3, 8, 0 );
        		
		
		//Commenting eye detection part out to make it faster...
		/*
		//detecting eye
		if( nestedCascade.empty() )
            continue;
        smallImgROI = smallImg(*r);
        nestedCascade.detectMultiScale( smallImgROI, nestedObjects,
            1.1, 2, 0
            //|CV_HAAR_FIND_BIGGEST_OBJECT
            //|CV_HAAR_DO_ROUGH_SEARCH
            //|CV_HAAR_DO_CANNY_PRUNING
            |CV_HAAR_SCALE_IMAGE
            ,
            Size(30, 30) );
		

        for( vector<Rect>::const_iterator nr = nestedObjects.begin(); nr != nestedObjects.end(); nr++ )
        {
            center.x = cvRound((r->x + nr->x + nr->width*0.5)*scale);
            center.y = cvRound((r->y + nr->y + nr->height*0.5)*scale);
            radius = cvRound((nr->width + nr->height)*0.25*scale);
            circle( img, center, radius, color, 3, 8, 0 );
        }
		*/		
		
    }  
    cv::imshow( "result", img );    
}
Ниже привожу картинку, которую я наблюдал при первом запуске вообще. А сейчас программа стабильно работает так: выбор камеры -> открытие окон и моментальный выход.

Ну еще дополнение, случайно вырезал текст кода (когда постил) и вставил обратно,перекомпилировал, вот такие ошибки (C2370): haarcascade_face: переопределение;другой класс хранения и тп... Странно, ведь до этого тот же самый код запустился. Как будто адрес хааров не всегда компилится.
Изображения
Тип файла: jpg Безымянный.jpg (36.3 Кб, 112 просмотров)

Последний раз редактировалось Krasi; 14.09.2012 в 05:28.
Krasi вне форума Ответить с цитированием
Старый 14.09.2012, 05:28   #30
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Каталоги включения: C:\Program Files\OpenCV2.2\include;C:\Program Files\OpenCV2.2\include\opencv;$(In cludePath)
Каталоги библиотек: C:\Program Files\OpenCV2.2\lib;$(LibraryPath)
Линкер - ввод: opencv_highgui220d.lib;opencv_ml220 d.lib;opencv_core220d.lib;opencv_vi deo220d.lib;opencv_legacy220d.lib;o pencv_imgproc220d.lib;opencv_objdet ect220d.lib;%(AdditionalDependencie s)
А СМейкил и компилировал библиотеку по адресу C:\Program Files\OpenCV2.2\build
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с веб камерой manik136 Помощь студентам 1 28.02.2012 18:14
работа с веб камерой на Visual C++ Skrip Visual C++ 2 01.10.2011 18:03
Работа с веб камерой Abbath1349 Общие вопросы .NET 1 05.07.2011 17:15
Работа с веб-камерой, синдром Малевича niki2012 Общие вопросы Delphi 6 21.02.2011 16:13