用opencv写一个linux下c++读取路径下所有bmp图片的代码
时间: 2024-01-01 07:05:31 浏览: 126
bmp.zip_herselfxt2_opencv C++ 图像_opencv图片转bmp
以下是使用OpenCV在Linux下读取路径下所有BMP图片的示例代码:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
// 检查命令行参数
if (argc != 2) {
cout << "Usage: ./read_bmp_images <directory path>" << endl;
return -1;
}
// 打开目录
string dir_path = argv[1];
DIR* dir = opendir(dir_path.c_str());
if (dir == NULL) {
cout << "Failed to open directory " << dir_path << endl;
return -1;
}
// 读取目录下所有BMP图片
struct dirent* entry;
while ((entry = readdir(dir)) != NULL) {
// 检查文件类型
if (entry->d_type == DT_REG && entry->d_name[0] != '.') {
// 检查文件后缀名
string file_path = dir_path + "/" + string(entry->d_name);
if (file_path.size() >= 4 && file_path.substr(file_path.size()-4) == ".bmp") {
// 读取图片
Mat img = imread(file_path, IMREAD_COLOR);
if (!img.empty()) {
// 显示图片
imshow("BMP Image", img);
waitKey(0);
}
}
}
}
// 关闭目录
closedir(dir);
return 0;
}
```
该代码使用了Linux系统的`<dirent.h>`头文件来读取目录下的文件列表,对于每个文件,检查其文件类型和后缀名,如果是BMP图片则使用OpenCV的`imread()`函数读取图片,并使用`imshow()`和`waitKey()`函数显示图片。
阅读全文