当前位置: 首页 > news >正文

机器学习篇---Python+opencv数字图像的基本操作

一、项目总体功能

本模块是图像处理实验的主控程序,负责按实验步骤依次调用各功能函数,完成彩色图像的读取、显示、颜色空间转换、几何变换、算术与按位运算,并保存所有处理结果。


二、图像读取与尺寸统一

img_bgr, img_rgb, img_gray = load_color_image('./DIP2026/DIP2026/lena.jpg') img_bgr_tow, img_rgb_tow, img_gray_tow = load_color_image('./DIP2026/DIP2026/lena.jpg')
  • load_color_image():自定义函数,输入图像文件路径,同时返回该图像的 BGR 格式、RGB 格式和灰度图三种表示,便于后续不同场景使用。

  • 此处两次调用同一张图片,分别赋值给img_*img_*_tow,后者将作为"第二张图"参与后续的双图运算。

h, w = img_bgr.shape[:2] img_bgr_tow = cv2.resize(img_bgr_tow, (w, h)) img_gray_tow = cv2.resize(img_gray_tow, (w, h))
  • img_bgr.shape[:2]:获取第一张图的高度h和宽度w

  • cv2.resize():OpenCV 的缩放函数,将第二张图的 BGR 和灰度版本都缩放到与第一张图相同的尺寸,确保后续两图运算时维度一致。


三、步骤1:显示彩色图与灰度图

plt.figure(figsize=(10,5))
  • plt.figure(figsize=(10,5)):创建一个宽度 10 英寸、高度 5 英寸的新画布。

plt.subplot(1,2,1) plt.imshow(img_rgb) plt.title('Color Image (RGB)') plt.axis('off')
  • plt.subplot(1,2,1):在 1 行 2 列的布局中选择第 1 个位置。

  • plt.imshow(img_rgb):显示 RGB 格式的图像,颜色正常。

  • plt.title():设置子图标题。

  • plt.axis('off'):隐藏坐标轴刻度。

plt.subplot(1,2,2) plt.imshow(img_gray_tow, cmap='gray') plt.title('Gray Image (converted from color)') plt.axis('off')
  • cmap='gray':将单通道数组以灰度色彩映射显示,确保灰度图正确呈现。

plt.tight_layout() plt.show()
  • plt.tight_layout():自动调整子图间距,避免重叠。

  • plt.show():渲染并显示图像窗口。


四、步骤2:打印图像数组基本信息

show_image_info(img_bgr, 'Color (BGR)') show_image_info(img_gray_tow, 'Gray (converted)')
  • show_image_info():自定义函数,打印图像数组的形状(维度)、数据类型、像素值范围等信息,帮助了解数据结构。


五、步骤3:颜色空间转换与三通道分离

gray, R, G, B = color_space_and_split(img_bgr)
  • color_space_and_split():自定义函数,接收 BGR 图像,返回灰度图以及分离后的红(R)、绿(G)、蓝(B)三个单通道图像。

随后用plt.subplot(2,3,*)创建 2 行 3 列的布局,依次显示原始 RGB 图、灰度图、红通道、绿通道、蓝通道。各通道均以cmap='gray'显示,亮度越高表示该通道在该像素点的分量越强。


六、步骤4:几何变换

geo_results = geometric_operations(img_bgr)
  • geometric_operations():自定义函数,对输入图像执行一系列几何变换(如缩放、旋转、平移、镜像等),返回一个字典,键为操作名称,值为变换后的图像。

plt.figure(figsize=(12,10)) for i, (name, result) in enumerate(geo_results.items(), 1): plt.subplot(2,3,i) if len(result.shape) == 2: plt.imshow(result, cmap='gray') else: plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB)) plt.title(name) plt.axis('off')
  • enumerate(geo_results.items(), 1):遍历字典,i从 1 开始计数。

  • len(result.shape) == 2:判断是否为灰度图(二维数组),是则以cmap='gray'显示。

  • cv2.cvtColor(result, cv2.COLOR_BGR2RGB):对彩色图进行 BGR→RGB 转换后再用imshow显示,确保颜色正确。


七、步骤5:算术与按位运算

arith_results = arithmetic_and_bitwise(img_bgr, img_gray_tow)
  • arithmetic_and_bitwise():自定义函数,利用第一张图的 BGR 图像与第二张图的灰度图像进行算术运算(加减乘除)和按位运算(与、或、非、异或),返回结果字典。

显示逻辑与步骤4完全相同:遍历字典,根据图像维度选择显示方式,BGR 图先转 RGB。


八、步骤6:保存所有处理结果

to_save = { 'gray_converted': img_gray_tow, **geo_results, **arith_results }
  • 构建保存字典,包含:

    • 'gray_converted':步骤1产生的灰度图;

    • **geo_results:展开几何变换结果字典,将其中所有键值对并入;

    • **arith_results:展开算术运算结果字典,并入。

  • Python 的**字典解包语法实现字典合并。

save_images(to_save, output_dir)
  • save_images():自定义函数,遍历字典,将每张图像以对应的键名作为文件名保存到output_dir指定的输出目录中。


九、整体执行流程总结

步骤功能核心函数
准备读取图像、统一尺寸load_color_image()cv2.resize()
步骤1显示彩色图与灰度图plt.imshow()
步骤2打印图像数组信息show_image_info()
步骤3颜色空间转换与通道分离color_space_and_split()
步骤4几何变换与显示geometric_operations()
步骤5算术与按位运算与显示arithmetic_and_bitwise()
步骤6保存所有结果save_images()

该主程序模块结构清晰,每一步都有独立的函数封装,符合模块化设计原则,便于调试和扩展。

框图说明

节点说明
图像读取左右分支并行读取同一张图像的两个副本,img 和 img_tow
尺寸统一第二张图通过cv2.resize()缩放到与第一张相同尺寸
步骤1使用 Matplotlib 并排显示 RGB 彩色图和灰度图
步骤2打印 BGR 图和灰度图的数组形状、dtype 等信息
步骤3BGR→灰度 + 通道分离,2×3 布局展示五幅图
步骤4执行多种几何变换,2×3 布局展示结果
步骤5利用两张图做算术和按位运算,2×3 布局展示
步骤6**语法合并所有结果字典,统一保存
http://www.jsqmd.com/news/931233/

相关文章:

  • Paradigm SKUA-GOCAD 2022安装后,别忘了检查这3个关键配置(破解成功与否就看它)
  • 终极VC++运行库修复指南:3步解决Windows依赖问题
  • ATLAS MMO 专用服务器搭建教程:海盗生存 MMO 服务器开服指南
  • 2026工业风扇厂家推荐:高性价比降温方案速选​ - 合昌环境科技
  • 上周帮一家制造企业做文件系统迁移,他们原有NAS上的权限配置导出来有400多行,用传统的“只读/读写“两档权限根本没法平
  • Win11Debloat:Windows系统优化的终极解决方案
  • Illustrator脚本大师:20+高效工具提升设计工作流90%
  • 智能热致变色加热坐垫DIY:柔性电子与材料科学的跨学科实践
  • 2026工业大风扇厂家推荐:10家靠谱品牌盘点​ - 合昌环境科技
  • 【评测】GEO效果工具的使用流程与结果展示
  • 石家庄莫奈包包变现攻略:闲置出手怎样更划算更省事? - 奢侈品回收测评
  • 深度分析:AI红队测试中的“逻辑降维攻击”与防御绕过策略
  • 大模型|大模型中的Pre-Retrieval 预检索优化
  • 打卡信奥刷题(3350)用C++实现信奥题 P9519 pay
  • 3分钟掌握植物大战僵尸最强修改器:PVZ Toolkit完全指南
  • Arduino入门实战:从LED闪烁项目理解嵌入式开发核心概念
  • LinkSwift:一款优雅解决网盘下载烦恼的开源工具
  • 相册
  • 终极Forza图片导入神器:Forza Painter完整使用指南与配置优化
  • 抖音无水印下载终极指南:三步解锁纯净视频收藏自由
  • 5分钟终极指南:如何用untrunc免费快速修复损坏的MP4视频文件
  • 避开STM32 ADC扫描模式的坑:DMA配置里‘单次’与‘循环’模式到底怎么选?
  • 浅谈RAG前的语义缓存层(3) —— 还是得让大模型兜底
  • 如何构建一个专业的《缺氧》存档编辑器?5个核心技术方案深度解析
  • 5分钟掌握ChanlunX:通达信缠论自动化分析终极指南
  • MSC新规征求意见稿:细胞库检定要求升级,你注意到这五项了吗?
  • YACReader终极指南:三步打造你的专业漫画图书馆
  • 荧光法溶解氧仪源头厂家推荐榜:2026国产十大优选品牌深度评测与选型指南 - 仪表品牌榜
  • 新建分类
  • 高效环保型吸墨涂层生产厂家梳理 技术实力与产品特点分析 - 变量人生001