我正在尝试用 C++ 学习 opencv,因为我很快就会被要求使用它。我面临的问题正如标题所说:即使路径正确,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);
}
解决我问题的方法是将构建配置文件更改为“发布”。由于某种原因,使用“调试”配置文件构建它会导致字符串被视为空,即使它不是空的。