Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
rondo-omg
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 7
1

Не прогружаются каскады haarcascade_frontalface_alt.xml в Visual Studio 2010. OpenCV. Завершается с ошибкой 1

14.12.2016, 04:38. Просмотров 1274. Ответов 8

Все форумы перечитала, много вариантов испробовала, но результата никакого. Подскажите кто сталкивался с подобной проблемой. Код взят готовый. С github модули с использованием каскадов тоже не работают.
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
 #include "opencv2/objdetect/objdetect.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/imgproc/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 = "haarcascade_frontalface_alt.xml";
 String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
 CascadeClassifier face_cascade;
 CascadeClassifier eyes_cascade;
 string window_name = "Capture - Face detection";
 RNG rng(12345);
 
 /** @function main */
 int main( int argc, const char** argv )
 {
   CvCapture* capture;
   Mat frame;
 
   //-- 1. Load the cascades
   if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
   if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
 
   //-- 2. Read the video stream
   capture = cvCaptureFromCAM( -1 );
   if( capture )
   {
     while( true )
     {
   frame = cvQueryFrame( capture );
 
   //-- 3. Apply the classifier to the frame
       if( !frame.empty() )
       { detectAndDisplay( frame ); }
       else
       { printf(" --(!) No captured frame -- Break!"); break; }
 
       int c = waitKey(10);
       if( (char)c == 'c' ) { break; }
      }
   }
   return 0;
 }
 
/** @function detectAndDisplay */
void detectAndDisplay( Mat frame )
{
  std::vector<Rect> faces;
  Mat frame_gray;
 
  cvtColor( frame, frame_gray, CV_BGR2GRAY );
  equalizeHist( frame_gray, frame_gray );
 
  //-- Detect faces
  face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
 
  for( size_t i = 0; i < faces.size(); i++ )
  {
    Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
    ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
 
    Mat faceROI = frame_gray( faces[i] );
    std::vector<Rect> eyes;
 
    //-- In each face, detect eyes
    eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
 
    for( size_t j = 0; j < eyes.size(); j++ )
     {
       Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );
       int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );
       circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
     }
  }
  //-- Show what you got
  imshow( window_name, frame );
 }
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 04:38
Ответы с готовыми решениями:

Не загружаются каскады в OpenCV
Есть код, полностью скопированный с оф. сайта OpenCV, но к сожалению почему-то не загружаются...

Visual Studio 2010 вылетает с ошибкой при использовании MPI
При запуске программы вылетает ошибка &quot;Прекращена работа MS Visual Studio 2010&quot; Сигнатура...

Данные в xml. Visual Studio 2010. C#
У меня есть несколько textbox, кнопка и xml файл. Как сделать так чтобы по нажатию кнопки данные из...

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010...

Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?
Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?

8
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
14.12.2016, 05:47 2
Лучший ответ Сообщение было отмечено rondo-omg как решение

Решение

"Error loading" выводит? И где файлы лежат?

Цитата Сообщение от rondo-omg Посмотреть сообщение
/** Global variables */
Если избавиться от глобальных переменных, то начинает загружаться.

Добавлено через 17 минут
Вот такой код, у меня, из 10-й студии, работает:
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
 #include "opencv2/objdetect/objdetect.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/imgproc/imgproc.hpp"
 
 #include <iostream>
 #include <stdio.h>
 
 using namespace std;
 using namespace cv;
 
 /** Function Headers */
 void detectAndDisplay( Mat frame, CascadeClassifier& face_cascade, CascadeClassifier& eyes_cascade );
 
 /** Global variables */
 //String face_cascade_name = "haarcascade_frontalface_alt.xml";
 //String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
 //CascadeClassifier face_cascade;
 //CascadeClassifier eyes_cascade;
 string window_name = "Capture - Face detection";
 RNG rng(12345);
 
 /** @function main */
 int main( int argc, const char** argv )
 {
    String face_cascade_name = "haarcascade_frontalface_alt.xml";
    String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
    CascadeClassifier face_cascade;
    CascadeClassifier eyes_cascade;
    
   CvCapture* capture;
   Mat frame;
 
   //-- 1. Load the cascades
   if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
   if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
 
   //-- 2. Read the video stream
   capture = cvCaptureFromCAM( -1 );
   if( capture )
   {
     while( true )
     {
     frame = cvQueryFrame( capture );
 
   //-- 3. Apply the classifier to the frame
       if( !frame.empty() )
       { 
           detectAndDisplay( frame, face_cascade, eyes_cascade ); 
       }
       else
       { printf(" --(!) No captured frame -- Break!"); break; }
 
       int c = waitKey(10);
       if( (char)c == 'c' ) { break; }
      }
   }
   return 0;
 }
 
/** @function detectAndDisplay */
void detectAndDisplay( Mat frame, CascadeClassifier& face_cascade, CascadeClassifier& eyes_cascade )
{
  std::vector<Rect> faces;
  Mat frame_gray;
 
  cvtColor( frame, frame_gray, CV_BGR2GRAY );
  equalizeHist( frame_gray, frame_gray );
 
  //-- Detect faces
  face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
 
  for( size_t i = 0; i < faces.size(); i++ )
  {
    Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
    ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
 
    Mat faceROI = frame_gray( faces[i] );
    std::vector<Rect> eyes;
 
    //-- In each face, detect eyes
    eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
 
    for( size_t j = 0; j < eyes.size(); j++ )
     {
       Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );
       int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );
       circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
     }
  }
  //-- Show what you got
  imshow( window_name, frame );
 }
1
rondo-omg
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 7
14.12.2016, 15:52  [ТС] 3
Изменила код. То же самое The program '[4196] OpenCvFace.exe: Native' has exited with code -1 (0xffffffff).

Находятся haarcascade*.xml в папке с проектом. Так же была попытка прописать полный путь
C++
1
String face_cascade_name = "С:\OpenCvFace\haarcascade_frontalface_alt.xml";
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
14.12.2016, 19:42 4
Цитата Сообщение от rondo-omg Посмотреть сообщение
Изменила код.
Как? Код как у меня?
Цитата Сообщение от rondo-omg Посмотреть сообщение
String face_cascade_name = "С:\OpenCvFace\haarcascade_frontalface_alt.xml";
Обратные слеши двойными нужно делать. Запуск из студии делаешь?
Точку останова сделай (в Debug, на первой строке в main()), и выясни место, где выход происходит.
OpenCV какая? Студия какая?
0
14.12.2016, 19:42
rondo-omg
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 7
14.12.2016, 21:11  [ТС] 5
Заработало)
Спасибо вам за помощь

Переустановила библиотеки opencv и прописала полный путь к xml (слэши изменила на /). У меня стоит Visual Studio 2010, библиотеки подгрузила версии 2411.
Оставлю здесь ссылку как устанавливать. Может кому пригодится https://marcomuraresearch.wordpress....visual-studio/
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
14.12.2016, 22:13 6
Цитата Сообщение от rondo-omg Посмотреть сообщение
Заработало)
Какой код? Из первого поста или мой?
Цитата Сообщение от rondo-omg Посмотреть сообщение
Переустановила библиотеки opencv и прописала полный путь к xml (слэши изменила на /).
Теперь как узнать, что помогло?
Цитата Сообщение от nd2 Посмотреть сообщение
Запуск из студии делаешь?
Добавлено через 3 минуты
Цитата Сообщение от rondo-omg Посмотреть сообщение
У меня стоит Visual Studio 2010
Что 10-я знаю... Какая 10-я? Express?
0
rondo-omg
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 7
15.12.2016, 00:50  [ТС] 7
Код ваш был запущен.
Сработала именно переустановка opencv.
Microsoft Visual Studio 2010. Не Express
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
15.12.2016, 01:06 8
Цитата Сообщение от rondo-omg Посмотреть сообщение
Код ваш был запущен.
Из студии? Без полных путей к файлам?
Цитата Сообщение от rondo-omg Посмотреть сообщение
Сработала именно переустановка opencv.
После переустановки, код, из первого поста, запускается из студии?
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
16.12.2016, 21:00 9
Трудно ответить?
0
16.12.2016, 21:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 21:00

Открыть проект Visual Studio 2015 в Visual Studio 2010
Здравствуйте не могу открыть проект созданный в Visual Studio 2015 в Visual Studio 2010.

Проект C# Visual Studio 2010 перевести в Visual Studio 2005
Подскажите как проект создан в C# Visual Studio 2010 перевести в версию Visual Studio 2005,...

Учебный материал Visual Studio 2010/Visual Studio 2008
Приветствую. Работаю программистом и не знаю всех особенностей/возможностей среды разработки....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.