Форум программистов, компьютерный форум CyberForum.ru

Каскады хаара - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.68
~GiPeRPrOgEr~
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
12.07.2011, 19:53     Каскады хаара #1
Всем привет. Кто нибудь пожалуйста дайте ссылку для скачивания cvhaartraining.lib, очень нужна эта библа. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 19:53     Каскады хаара
Посмотрите здесь:

C# Вейвлет Хаара
Товарищи помогите с вейвлетом Хаара C++
C++ Вейвлет Хаара 2.Ввод и вывод.
Вейвлет Хаара
C++ Прямое и обратное преобразование Хаара
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
12.07.2011, 19:59     Каскады хаара #2
Гугл: "cvhaartraining.lib download"
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.07.2011, 20:01     Каскады хаара #3
~GiPeRPrOgEr~, http://www.assembla.com/code/aamsnu/...ing.lib?rev=23 - это не оно?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
12.07.2011, 20:04     Каскады хаара #4
Есть подозрения, что ТС одной либой не отделается) Лучше сразу все качать, что OpenCV предлагает.
~GiPeRPrOgEr~
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
12.07.2011, 21:46  [ТС]     Каскады хаара #5
Всем привет. Кто нибудь подскажите пожалуйста почему вылетает такая ошибка при работе с OpenCv Visual C++ 2010
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _cvHaarDetectObjects в функции "void __cdecl detect_and_draw(struct _IplImage *)" (?detect_and_draw@@YAXPAU_IplImage@@@Z) C:\Users\Серёга\Documents\Visual Studio 2010\Projects\Реальный тест 2 часть 3\Реальный тест\Реальный тест.obj Реальный тест

Я пытаюсь подключить каскады Хаара

Буду очень признателен, подскажите Please

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
#include "stdafx.h"
// OpenCV Sample Application: facedetect.c
 
 
// OpenCV Sample Application: facedetect.c
 
// Include header files
#include "cv.h"
#include "highgui.h"
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
 
// Create memory for calculations
static CvMemStorage* storage = 0;
 
// Create a new Haar classifier
static CvHaarClassifierCascade* cascade = 0;
 
// Function prototype for detecting and drawing an object from an image
void detect_and_draw( IplImage* image );
 
// Create a string that contains the cascade name
const char* cascade_name =
    "haarcascade_frontalface_alt.xml";
/*    "haarcascade_profileface.xml";*/
 
// Main function, defines the entry point for the program.
int main( int argc, char** argv )
{
 
    // Structure for getting video from camera or avi
    CvCapture* capture = 0;
 
    // Images to capture the frame from video or camera or from file
    IplImage *frame, *frame_copy = 0;
 
    // Used for calculations
    int optlen = strlen("--cascade=");
 
    // Input file name for avi or image file.
    const char* input_name;
 
    // Check for the correct usage of the command line
    if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 )
    {
        cascade_name = argv[1] + optlen;
        input_name = argc > 2 ? argv[2] : 0;
    }
    else
    {
        fprintf( stderr,
        "Usage: facedetect --cascade=\"<cascade_path>\" [filename|camera_index]\n" );
        return -1;
        /*input_name = argc > 1 ? argv[1] : 0;*/
    }
 
    // Load the HaarClassifierCascade
    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
    
    // Check whether the cascade has loaded successfully. Else report and error and quit
    if( !cascade )
    {
        fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
        return -1;
    }
    
    // Allocate the memory storage
    storage = cvCreateMemStorage(0);
    
    // Find whether to detect the object from file or from camera.
    if( !input_name || (isdigit(input_name[0]) && input_name[1] == '\0') )
        capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );
    else
        capture = cvCaptureFromAVI( input_name ); 
 
    // Create a new named window with title: result
    cvNamedWindow( "result", 1 );
 
    // Find if the capture is loaded successfully or not.
 
    // If loaded succesfully, then:
    if( capture )
    {
        // Capture from the camera.
        for(;;)
        {
            // Capture the frame and load it in IplImage
            if( !cvGrabFrame( capture ))
                break;
            frame = cvRetrieveFrame( capture );
 
            // If the frame does not exist, quit the loop
            if( !frame )
                break;
            
            // Allocate framecopy as the same size of the frame
            if( !frame_copy )
                frame_copy = cvCreateImage( cvSize(frame->width,frame->height),
                                            IPL_DEPTH_8U, frame->nChannels );
 
            // Check the origin of image. If top left, copy the image frame to frame_copy. 
            if( frame->origin == IPL_ORIGIN_TL )
                cvCopy( frame, frame_copy, 0 );
            // Else flip and copy the image
            else
                cvFlip( frame, frame_copy, 0 );
            
            // Call the function to detect and draw the face
            detect_and_draw( frame_copy );
 
            // Wait for a while before proceeding to the next frame
            if( cvWaitKey( 10 ) >= 0 )
                break;
        }
 
        // Release the images, and capture memory
        cvReleaseImage( &frame_copy );
        cvReleaseCapture( &capture );
    }
 
    // If the capture is not loaded succesfully, then:
    else
    {
        // Assume the image to be lena.jpg, or the input_name specified
        const char* filename = input_name ? input_name : (char*)"lena.jpg";
 
        // Load the image from that filename
        IplImage* image = cvLoadImage( filename, 1 );
 
        // If Image is loaded succesfully, then:
        if( image )
        {
            // Detect and draw the face
            detect_and_draw( image );
 
            // Wait for user input
            cvWaitKey(0);
 
            // Release the image memory
            cvReleaseImage( &image );
        }
        else
        {
            /* assume it is a text file containing the
               list of the image filenames to be processed - one per line */
            FILE* f = fopen( filename, "rt" );
            if( f )
            {
                char buf[1000+1];
 
                // Get the line from the file
                while( fgets( buf, 1000, f ) )
                {
 
                    // Remove the spaces if any, and clean up the name
                    int len = (int)strlen(buf);
                    while( len > 0 && isspace(buf[len-1]) )
                        len--;
                    buf[len] = '\0';
 
                    // Load the image from the filename present in the buffer
                    image = cvLoadImage( buf, 1 );
 
                    // If the image was loaded succesfully, then:
                    if( image )
                    {
                        // Detect and draw the face from the image
                        detect_and_draw( image );
                        
                        // Wait for the user input, and release the memory
                        cvWaitKey(0);
                        cvReleaseImage( &image );
                    }
                }
                // Close the file
                fclose(f);
            }
        }
 
    }
    
    // Destroy the window previously created with filename: "result"
    cvDestroyWindow("result");
 
    // return 0 to indicate successfull execution of the program
    return 0;
}
 
// Function to detect and draw any faces that is present in an image
void detect_and_draw( IplImage* img )
{
    int scale = 1;
 
    // Create a new image based on the input image
    IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );
 
    // Create two points to represent the face locations
    CvPoint pt1, pt2;
    int i;
 
    // Clear the memory storage which was used before
    cvClearMemStorage( storage );
 
    // Find whether the cascade is loaded, to find the faces. If yes, then:
    if( cascade )
    {
 
        // There can be more than one face in an image. So create a growable sequence of faces.
        // Detect the objects and store them in the sequence
        CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
                                            1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
                                            cvSize(40, 40) );
 
        // Loop the number of faces found.
        for( i = 0; i < (faces ? faces->total : 0); i++ )
        {
           // Create a new rectangle for drawing the face
            CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
 
            // Find the dimensions of the face,and scale it if necessary
            pt1.x = r->x*scale;
            pt2.x = (r->x+r->width)*scale;
            pt1.y = r->y*scale;
            pt2.y = (r->y+r->height)*scale;
 
            // Draw the rectangle in the input image
            cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );
        }
    }
 
    // Show the image in the window named "result"
    cvShowImage( "result", img );
 
    // Release the temp image created.
    cvReleaseImage( &temp );
}
 Комментарий модератора 
Сообщение было перенесено из схожей темы
~GiPeRPrOgEr~
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
13.07.2011, 07:29  [ТС]     Каскады хаара #6
Спасибо большое, но теперь все равно выдает ошибку LNK2019 о ссылке на неразрешенный символ.
Может еще кто подскажет, что нибудь?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.07.2011, 11:57     Каскады хаара #7
Цитата Сообщение от ~GiPeRPrOgEr~ Посмотреть сообщение
Спасибо большое, но теперь все равно выдает ошибку LNK2019 о ссылке на неразрешенный символ.
Может еще кто подскажет, что нибудь?
я думаю, что все же дело в этом:

Цитата Сообщение от KuKu Посмотреть сообщение
Есть подозрения, что ТС одной либой не отделается) Лучше сразу все качать, что OpenCV предлагает.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
13.07.2011, 19:05     Каскады хаара #8
~GiPeRPrOgEr~, вбейте уже в гугл "openCV на русском" и в первых 3-4 ссылках найдите пошаговую интсрукцию, как создавать работающие проекты с openCV. Так у вас будет вопрос за вопросом до бесконечности - тут надо сесть и один раз прочитать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2011, 20:09     Каскады хаара
Еще ссылки по теме:

Обучение каскада Хаара на С#
Matlab Двумерное прямое и обратное вейвлет-преобразование Хаара, матлаб

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
~GiPeRPrOgEr~
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
13.07.2011, 20:09  [ТС]     Каскады хаара #9
KuKu , понимаете все проекты работают, я подключением разобрался, но как только вызываю функцию cvHaarDetectObjects, выходит вышесказанная ошибка.
Yandex
Объявления
13.07.2011, 20:09     Каскады хаара
Ответ Создать тему
Опции темы

Текущее время: 09:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru