一、项目总体功能本模块是图像处理实验的主控程序负责按实验步骤依次调用各功能函数完成彩色图像的读取、显示、颜色空间转换、几何变换、算术与按位运算并保存所有处理结果。二、图像读取与尺寸统一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, cmapgray) plt.title(Gray Image (converted from color)) plt.axis(off)cmapgray将单通道数组以灰度色彩映射显示确保灰度图正确呈现。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 图、灰度图、红通道、绿通道、蓝通道。各通道均以cmapgray显示亮度越高表示该通道在该像素点的分量越强。六、步骤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, cmapgray) 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判断是否为灰度图二维数组是则以cmapgray显示。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用**语法合并所有结果字典统一保存