Функция загрузки в opencv работает неправильно

#c #visual-studio #opencv

Вопрос:

Я попытался взять код для распознавания лиц с помощью веб-камеры, основанной на библиотеке OpenCV. Проблема в том, что код работает до тех пор, пока каскады не попытаются загрузиться.

 (if (!face_cascade.load(face_cascade_name)) { printf("--(!)Error loadingn"); return -1; };).  

Я использую Visual Studio 2019. Opencv v4.5.4. В свойствах проекта я указал способ включения каталогов и библиотек.

Я пытался указать на абсолютный путь C:/Users/.../opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml и относительный путь.

Фрагмент кода:

 #include lt;opencv2/objdetect/objdetect.hppgt; #include lt;opencv2/highgui/highgui.hppgt; #include lt;opencv2/imgproc/imgproc.hppgt;  #include lt;iostreamgt; #include "Tserial.h"  using namespace std; using namespace cv;  /** Function Headers */ void detectAndDisplay(Mat frame);  /** Global variables */ //-- Note, either copy these two files from opencv/data/haarscascades to your current folder, or change these locations 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";   int main(int argc, const char** argv) {  VideoCapture capture;  Mat frame;   //-- 1. Load the cascades  if (!face_cascade.load(face_cascade_name)) { printf("--(!)Error loadingn"); return -1; };    if (!eyes_cascade.load(eyes_cascade_name)) { printf("--(!)Error loadingn"); return -1; };  

Приложение терминала закрывается после face_cascade.load(имя face_cascade_name).

Скажите мне, пожалуйста, в чем может быть проблема. Может быть, путь, который я указал, выглядит неправильно?

Комментарии:

1. файл действительно там? для путей Windows требуются обратные косые черты, а не косые черты вперед. совместимость иногда существует, но не всегда.

2. Да, файл действительно есть. Косые черты вперед предназначены для синтаксиса visual studio.

3. вы используете относительные пути. относительные пути разрешаются не относительно положения программы, а относительно текущего рабочего каталога , который может отличаться. — есть ли у вас какие-нибудь забавные персонажи на пути?

4. Я пытался использовать абсолютный путь (c:/Users/…/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml).

5. проверьте с помощью обычного C (без участия OpenCV), можете ли вы открыть и прочитать этот XML-файл.