如何在文件夹opencv&&qt c++中加载图像[关闭]

Posted

技术标签:

【中文标题】如何在文件夹opencv&&qt c++中加载图像[关闭]【英文标题】:How to load images in folder opencv&&qt c++ [closed] 【发布时间】:2014-09-02 09:34:23 【问题描述】:

我想在文件夹中加载图片。

 QString fileName = QFileDialog::getOpenFileName(this,
  tr("Open Images"), "C:/Users/Public/Pictures/Sample Pictures/pic.jpg", tr("Image Files (*.png   *.jpg *.bmp)"));
  ui->label_pic->setPixmap(QPixmap::fromImage(fileName));

上面没有问题代码,或者我可以做那个imread功能,但我想一张一张地加载文件夹中的图片。例如;如果文件夹中有50张.jpg图像我想一张一张地打印屏幕。

 QString fileName2;

 QString directory = QFileDialog::getExistingDirectory(this,tr("Find Files"), QDir::currentPath());
//directoryComboBox->setCurrentIndex(directoryComboBox->findText(directory));

 ui->directoryComboBox->addItem(directory);

如果我选择 C:/Users/Public/Pictures/Sample Pictures,我想在屏幕上显示所有图片。

【问题讨论】:

什么阻止了你? 如果您的问题是从单个目录中获取包含“所有”文件/图像的列表,请查看此(我搜索过,希望这是正确的功能):qt-project.org/doc/qt-4.7/qdir.html#entryList 我猜你也可以添加文件扩展名过滤器... opencv 为此也有一个 glob() 函数。然后是 hconcat 和 vconcat 加入图像。 我不能特别在文件夹中拍摄图像。如果有像foreach这样的循环,我想学习它。 @Otantic,一次解决 1 个问题,而不是一次解决 3 个问题。 【参考方案1】:

使用QDir::entryList 获取与您的条件(图像)匹配的目录中的文件列表,然后使用foreach

 QDir dir(directory);
 dir.setNameFilters(QStringList() << "*.png" << "*.jpg");
 QStringList fileList = dir.entryList();
 foreach (QString path, fileList)
 
   // do what you want, for example, create a new QLabel here
 

【讨论】:

这似乎可行,但我做不到。 QImage 图像(文件列表); ui->label_pic2->setPixmap(QPixmap::fromImage(image2)); 这是另一个问题。您说无法获取目录中的文件“我无法在文件夹中拍摄图像。”。 当然,您不能一次加载所有图像,这就是为什么会有foreach。一个一个地加载它们,然后为每个创建一个新的 QLabel 或将它们附加到一个 QPixmap 中。如果您在这方面需要帮助,请提出新问题。 看这里合并图片***.com/questions/6477958/… fileList 保留地址,如 a.jpg,b.jpg,c.jpg...但我无法在屏幕上显示这些图像。屏幕上仅显示它们的名称。

以上是关于如何在文件夹opencv&&qt c++中加载图像[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV&Qt学习之四——OpenCV 实现人脸检测与相关知识整理

OpenCV 2.4.10 + Qt Creator 3.2.0 & Qt5.4.0 MingW 64bits Windows 7 - “退出代码 -1073741515”

Qt - OpenCV在项目中集成使用(待完成)

Qt Creator 链接器错误:LNK1104:无法打开文件“opencv_core249d.lib”

Ubuntu 编译安装 OpenCV 3.1

opencv在g++&win7下如何配置