如何在文件夹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”