读取一个文件夹下的所有图片处理并保存opencv
在OpenCV库中,读取、处理和保存文件夹中的多张图片是一项常见的任务,尤其在图像处理和计算机视觉领域。本教程将详细介绍如何利用OpenCV来实现这一目标,特别是针对图片的二值化处理。 让我们了解什么是OpenCV。OpenCV(开源计算机视觉库)是一个强大的跨平台计算机视觉库,它包含了各种图像处理和计算机视觉的算法。在Python中,OpenCV提供了一个易于使用的API,使得处理图像和视频变得简单。 **步骤1:导入所需库** 在Python中,我们需要导入以下库: ```python import cv2 import os ``` `cv2`是OpenCV的Python接口,而`os`库用于文件和目录操作。 **步骤2:定义输入和输出路径** 定义文件夹路径,例如: ```python input_folder = "源图片文件夹路径" output_folder = "目标图片文件夹路径" ``` 确保这些路径是有效的,并且`output_folder`已经存在,如果没有,你需要创建它。 **步骤3:遍历文件夹并读取图片** 使用`os.listdir()`遍历`input_folder`中的所有文件,然后用OpenCV的`cv2.imread()`读取图片: ```python for filename in os.listdir(input_folder): if filename.endswith(".jpg") or filename.endswith(".png"): # 只处理.jpg和.png图片 img_path = os.path.join(input_folder, filename) img = cv2.imread(img_path) ``` **步骤4:执行二值化处理** 二值化是将图像转换为只有黑白两种颜色的过程。在OpenCV中,我们可以使用`cv2.threshold()`函数实现: ```python gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰度图像 binary_img, _ = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY) # 二值化阈值处理 ``` 这里的阈值127可以调整以适应不同的图像。 **步骤5:保存处理后的图片** 我们使用`cv2.imwrite()`将二值化图片保存到`output_folder`: ```python output_path = os.path.join(output_folder, filename) cv2.imwrite(output_path, binary_img) ``` **完整代码示例** ```python import cv2 import os input_folder = "源图片文件夹路径" output_folder = "目标图片文件夹路径" # 创建输出文件夹,如果不存在 if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(input_folder): if filename.endswith(".jpg") or filename.endswith(".png"): img_path = os.path.join(input_folder, filename) img = cv2.imread(img_path) gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) binary_img, _ = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY) output_path = os.path.join(output_folder, filename) cv2.imwrite(output_path, binary_img) ``` 通过以上步骤,你就可以使用OpenCV读取一个文件夹下的所有图片,进行二值化处理后,再保存到另一个文件夹。这个过程在图像分析、文字识别或简单的图像预处理等场景中非常有用。记得根据实际的图片格式和需要调整阈值,以达到最佳效果。
- 1
- Heinrich13482018-01-10还可以用吧
- 粉丝: 1
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 蚁群算法小程序-matlab
- 粒子群算法小程序-matlab
- 《新能源接入的电力市场主辅联合出清》 出清模型以考虑安全约束的机组组合模型(SCUC)和经济调度模型(SCED)组成 程序基于IEEE30节点编写,并接入风电机组参与电力市场,辅助服务市场为备用市场
- 个人创作原画作品,禁止盗用
- 遗传算法程序-matlab
- 游戏人物检测15-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Windows 7安装NET补丁
- 高动态导航技术全套技术资料.zip
- cms测试练习项目(linux系统部署)
- 游戏人物检测15-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- 名城小区物业管理-JAVA-基于Spring boot的名城小区物业管理系统设计实现(毕业论文+开题)
- 多媒体素材库-JAVA-基于springboot的多媒体素材库的开发与应用(毕业论文)
- 大学生心理健康管理-JAVA-基于springBoot大学生心理健康管理系统的设计与实现(毕业论文)
- 论坛系统-JAVA-基于SpringBoot的论坛系统设计与实现(毕业论文+开题+PPT)
- 游戏人物检测17-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 大学生智能消费记账-JAVA-springboot205大学生智能消费记账系统的设计与实现(毕业论文)