当前位置: 首页 > 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.zskr.cn/news/1442568.html

相关文章:

  • ATLAS MMO 专用服务器搭建教程:海盗生存 MMO 服务器开服指南
  • 智能热致变色加热坐垫DIY:柔性电子与材料科学的跨学科实践
  • LinkSwift:一款优雅解决网盘下载烦恼的开源工具
  • 抖音无水印下载终极指南:三步解锁纯净视频收藏自由
  • 避开STM32 ADC扫描模式的坑:DMA配置里‘单次’与‘循环’模式到底怎么选?
  • 5分钟掌握ChanlunX:通达信缠论自动化分析终极指南
  • 高效环保型吸墨涂层生产厂家梳理 技术实力与产品特点分析 - 变量人生001
  • Python网络编程之FTP项目开发
  • d2s-editor:暗黑破坏神2存档编辑终极指南,5分钟打造完美角色
  • 打卡信奥刷题(3351)用C++实现信奥题 P9560 [SDCPC 2023] Math Problem
  • 2026武汉收纳整理师推荐|武汉上门整理服务哪家靠谱?高口碑高性价比榜单 - 土星买买买
  • Trelby终极指南:为什么这款免费开源剧本写作软件能让创作者专注故事本身?
  • KNX智能照明避坑指南:用ETS5配置调光与场景时,90%新手会忽略的5个细节
  • YOLO11转CoreML完全指南:手把手教你如何将YOLO11转换为CoreML格式,并在iOS上测试。
  • 2026年5月目前靠谱的玉石厂商推荐,易加工石材/天然大理石/适配背景墙岩板/环保无异味岩板,玉石公司选哪家 - 品牌推荐师
  • ncmdump:突破网易云音乐NCM加密的智能解密工具,5分钟解锁音乐自由
  • 长沙民办中职院校排行 5所合规办学机构实力解析 - 互联网科技品牌测评
  • 3步安装OmenSuperHub:终极免费的暗影精灵笔记本硬件管理工具
  • 公链革命2.0:Layer 1与Layer 2如何重构区块链开发者的黄金时代
  • MapStruct 与 Lombok 协作的注解处理器执行顺序分析
  • m4s转MP4完整指南:3分钟解锁B站缓存视频的终极解决方案
  • 【收藏干货】2026 新版大模型转行全攻略:零基础小白、在职程序员转行避坑指南
  • 用AI翻译你的WordPress —— WordPress AI Generator 2.4.0发布
  • 微博舆情监控:定时爬取热点话题,通过NLP判断正负面情绪。微博舆情监控实战:基于定时爬取与NLP情感分析的Python实现
  • 空间计算在未来大有前景
  • 终极指南:掌握RPFM游戏模组开发的10个关键技术
  • Palworld存档修复终极指南:如何在不同服务器间无缝迁移游戏进度
  • rpm方式安装minio
  • 成都角钢公司|角钢厂家|角钢批发推荐|四川盛世钢联国际贸易有限公司供应 - 四川盛世钢联营销中心
  • 零基础理解 RAG:从文档分块、向量化到相似度检索,带你搞懂检索增强生成的底层核心逻辑