qt - Opencv使用QString文件名的imread和vector加载图像

标签 qt opencv c++11 qstring

我一直在尝试通过使用imread将循环中的某些图像读取到带有opencv的Mat vector (图像)中,方法是从QString vector 中获取文件名,但它不会编译。我知道问题出在我的QString的格式上,但似乎无法解决。我也尝试过... image = imread( image_vector[i] ); ...和其他几种方法。任何帮助是极大的赞赏。

for ( unsigned int i = 0; i < image_names.size(); i++ )
{ 
    image = imread( image_names.data()->at(i) );

    if( !image.data )
    {
        qDebug()<< "Error";
    }
    else
    {
         image_vector.push_back( image );
    }
}

最佳答案

要使用imread,您必须将std::string传递给它。

Mat imread( const std::string& filename, int flags=1 );

在您的情况下,image_namesvector<QString>,因此正确的代码是:
image = imread( image_names[i].toStdString());

关于qt - Opencv使用QString文件名的imread和vector加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267567/

相关文章:

c++ - 最小可能的分母/除数是多少?

c++ - 我可以用什么来替换我的 Qt 应用程序中的 sleep 和 usleep?

c++ - Qt 应用程序和 Windows 资源管理器之间的剪切和粘贴剪贴板交换

c++ - 对 QJsonArray 进行排序

c++ - opencv c++ 加载图像,获得非常大的像素值

python - 无法正确获得轮廓

c++ - 如何有效地连接 QStrings

c++ - cpp 中基于 FFT 的图像配准(可选地使用 OpenCV)?

c++ - 通过引用递归 lambda

c++ - 从 std::tuple<some_types...> 开始创建子元组