Qt Opencv使用imread和QString文件名向量加载图像
我一直在尝试使用opencv使用Qt Opencv使用imread和QString文件名向量加载图像,qt,opencv,c++11,qstring,Qt,Opencv,C++11,Qstring,我一直在尝试使用opencv使用imread将循环中的一些图像读取到Mat(图像)的向量中,方法是从QString的向量中获取文件名,但它不会编译。我知道这是我的QString格式的问题,但似乎无法解决。我也尝试过…image=imread(image\u vector[I])。。。还有其他几种方式。非常感谢您的帮助 for ( unsigned int i = 0; i < image_names.size(); i++ ) { image = imread( image_na
imread
将循环中的一些图像读取到Mat
(图像)的向量中,方法是从QString
的向量中获取文件名,但它不会编译。我知道这是我的QString
格式的问题,但似乎无法解决。我也尝试过…image=imread(image\u 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 );
}
}
for(unsigned int i=0;iat(i));
如果(!image.data)
{
qDebug()要使用imread
必须向其传递std::string
Mat imread( const std::string& filename, int flags=1 );
在您的例子中,image\u name
是vector
,因此正确的代码是:
image = imread( image_names[i].toStdString());
image\u vector
中有什么内容?您似乎既从中读取了文件名,又向其中添加了cv矩阵?对不起,我输入了错误的名称,我已经编辑过。请尝试类似于image\u names[I].toStdString().c\u str()
的内容。imread的声明是:cv\u EXPORTS\u W Mat imread(const string&filename,int flags=1)因此,如果image\u names
是QString的数组或向量,则应使用:image=imread(image\u names[i].tostString());
Right:image\u names.data()
返回QString*指针,而image\u names.data()->at(i)
返回向量第一个QString的第i个QChar。