OpenCV批量读取与转换文件夹图片并保存
4星 · 超过85%的资源 需积分: 50 137 浏览量
更新于2024-09-12
8
收藏 931B TXT 举报
在这个OpenCV编程示例中,我们将探讨如何使用OpenCV库(版本2)来读取一个文件夹中的多幅图片,并将它们转换为灰度图像后保存到另一个文件夹。以下是一个详细的步骤解析:
1. 引入必要的OpenCV头文件:
- `#include<opencv2/opencv.hpp>`:包含了OpenCV库的主要接口,如IplImage结构和函数声明。
- `#include<cv.h>`:包含了一些基本的图像处理函数。
- `#include<cxcore.h>`:用于处理与图像相关的数据类型和内存管理。
- `#include<highgui.h>`:提供了用于显示图像和窗口创建的函数。
- `#include<iostream>`:用于标准输入输出,方便打印信息。
- `#include<string.h>`:字符串处理相关。
- `#include<stdlib.h>`:系统调用函数。
2. 声明和初始化变量:
- `IplImage *img` 和 `IplImage *dst` 分别表示输入图像和输出灰度图像的指针。
- `int argc` 和 `char* argv[]` 是命令行参数的处理,但在这个示例中并未使用。
3. 主函数 `main()`:
- 使用 `for` 循环遍历指定目录("E:\ͼ\"),假设该目录下有1到10张jpg格式的图片,例如 "1.jpg", "2.jpg" 等。
- `sprintf(file_img, "E:\\ͼ\\%d.jpg", i)` 用于构建图片文件路径,动态地根据循环变量i填充图片编号。
- `img = cvLoadImage(file_img, 1)`:通过cvLoadImage函数读取指定路径下的图片,第二个参数1表示BGR格式,但因为后续会转换为灰度,所以通常不需要特别指定。
4. 图像处理:
- 创建一个与输入图像大小相同的灰度图像 `dst = cvCreateImage(cvGetSize(img), 8, 1)`,其中8代表8位深度(灰度),1代表单通道。
- `cvCvtColor(img, dst, CV_RGB2GRAY)`:使用颜色空间转换函数将RGB图像转换为灰度。
- 输出当前图片序号以及使用 `cvNamedWindow` 和 `cvShowImage` 显示灰度图像。
5. 保存处理后的图片:
- `sprintf(file_dst, "E:\\m\\%d.jpg", i)` 构建目标保存路径,将图片保存到 "E:\m\" 目录下,图片名称与原图片保持一致。
- `cvSaveImage(file_dst, dst)`:使用cvSaveImage函数保存图像。
6. 用户交互:
- 使用 `cvWaitKey(2500)` 暂停程序运行,等待用户按键。如果按下Esc键(ASCII码27),则退出循环。
- 在循环结束后,关闭所有窗口并释放资源。
7. 清理:
- `cvDestroyAllWindows()`:关闭所有显示的窗口。
- `cvReleaseImage(&img)` 和 `cvReleaseImage(&dst)`:释放之前分配的图像内存。
总结:
这个代码展示了如何使用OpenCV库的基本功能来批量读取文件夹中的图片,并进行简单的图像处理(转换为灰度)。它适合初学者了解OpenCV图像读取、转换和保存的基本流程。如果你需要对图片进行更复杂的操作,如特征提取、滤波或机器学习应用,可以在此基础上扩展。
点击了解资源详情
2023-05-16 上传
2018-09-14 上传
530 浏览量
2021-12-10 上传
2018-06-01 上传
lexi_qi
- 粉丝: 177
- 资源: 24
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析