OpenCV не читает изображение, даже если путь правильный, строка кажется пустой (imread_(''): невозможно открыть/прочитать файл: проверьте путь/целостность файла)

Я пытаюсь изучить opencv на C++, так как очень скоро мне придется его использовать. Проблема, с которой я столкнулся, в точности соответствует названию: opencv не открывает (cv::imread()) любое изображение, даже если путь правильный.

Когда я использую cv::imread(path), я получаю ошибку

[ WARN:[email protected]] global loadsave.cpp:241 cv::findDecoder imread_(''): can't open/read file: check file path/integrity

Я пробовал использовать /, //, \\\\\\. Я пробовал использовать абсолютный путь и относительный путь. Я также пробовал открывать разные изображения в разных папках и на разных дисках (c:/ и d:/). Я также попытался обновить свою установку opencv.

Сейчас я использую OpenCV 4.10 и Visual Studio 2022.

Это код, который я пытаюсь запустить:

#pragma once
#include <opencv2/opencv.hpp>
#include <iostream>
#include <filesystem>
#include <windows.h>
#include <shobjidl.h>

int main() {

    cv::String filepath("D:/repos/faculdade/dataset/AnaCedran60dias.jpg");

    cv::Mat cvimg = cv::imread(filepath, 0);

    std::cout << "Path:\n" << filepath << std::endl;

    if (cvimg.empty())
        std::cout << "img wasnt read" << std::endl;
    
    cv::waitKey(0);
}

🤔 А знаете ли вы, что...
C++ поддерживает объектно-ориентированное, процедурное и обобщенное программирование.


1
117
2

Ответы:

Решено

Итак, что решило мою проблему, так это изменение профиля сборки на «Выпуск». По какой-то причине создание профиля «Отладка» приводило к тому, что строка воспринималась как пустая, хотя это не так.


Проблема возникает, когда вы используете imread() из библиотеки режима выпуска в режиме отладки.

В отладке вам нужно использовать библиотеку с d: opencv_world4100d.lib