2014-11-22 2 views
0

Я пытаюсь загрузить изображение двух способов:Пустого изображения считывается из файла (используя путь к файлу)

  1. , введя явно путь к файлу (в коде). т.е .:

    std::string g = "G:\\Downloads\\L-526.jpg"; 
    
    cv::Mat frame = cv::imread(g); 
    if (!frame.data) 
    { 
        printf(" No image data \n "); 
    } 
    cv::namedWindow("Display window", 1);// Create a window for display. 
    cv::imshow("Display window",frame); 
    
  2. путем загрузки путь к файлу с GUI (с использованием "Обзор"):

    std::string f; 
    f = LoadImFromGUI(); 
    //ReplaceStringInPlace(f,"\\","/"); // thought need replacing the double backslash 
    cv::waitKey(0); // NOTE: IN THIS STEP, f IS TOTALLY IDENTICAL to g (from the 1st case) 
    cv::Mat frame = cv::imread(f); 
    
    if (!frame.data) 
    { 
        printf(" No image data \n "); 
    } 
    cv::namedWindow("Display window", 1);// Create a window for display. 
    cv::imshow("Display window", frame); 
    

В режиме отладки я получаю один и тот же путь, как в 1-й и 2-й случай. Но в первом случае изображение загружается и отображается, а во втором случае (где я просматриваю и загружаю одно и то же изображение) я получаю пустое изображение.

Что я должен изменить в своем коде?

+0

Я задаюсь вопросом, почему первый вариант работает, так как я предположил бы, что он должен быть Cv :: Mat кадр = резюме :: imread (g.c_str()); – Micka

+0

И попробуйте std :: cout << f.c_str() перед тем, как прочитать, чтобы проверить, сработала ли ваша обратная косая черта! – Micka

ответ

-1

Попробуйте это:

g = "G:/Downloads/L-526.jpg"; 
Смежные вопросы