图像处理与分析——实验一-数字图像处理相关软件学习

ELecmark VIP

实验目标:

Python是干啥的?

BMP图像的结构是什么样的?

用VC怎么写图像处理的程序?

实验要求:

  1. 写个简单的Python程序,完成以下操作:

    a) 打开一幅图片(如自己的照片)

    b) 将图片大小修改成640*480

    c) 将修改大小后的图像转成黑白图像

    d) 将图像存成gif格式

  2. 不知道大家还记不记得奥运开幕式中那一幅幅小的笑脸照片组成大大的笑脸环节,其实日常生活中也有很多这样类似的创意,用很多幅小的相关图片组成一副大的主题图片,如下面右图就是用很多表情笑脸图合成左图的效果。考虑一下如果自己写程序的话,怎么来实现。

    img

实验方案:

  1. 写个简单的Python程序,完成指定操作。

(1) 首先安装Python的图像处理库Pillow

(2) 导入库中的Image对象

(3) 使用Image对象的open函数打开图像

(4) 通过resize方法将图像大小设置为640x480

(5) 通过convert方法将图像灰度化

(6) 通过save方法将处理后的图像保存下来

  1. 马赛克图像合成。

准备实验环境和素材。

(1) 安装Python的图像处理库Pillow和数学运算库NumPy。

(2) 准备一个大的目标图像和一组小图片素材。

处理小图片集。

(1) 定义函数以计算小图片的平均颜色。

(2) 遍历图标文件夹,调整每个小图片的大小。

实现马赛克图像合成。

(1) 定义函数以创建马赛克图像。

(2) 调整目标图像的大小以适应马赛克格子。

(3) 分割目标图像并为每个格子选择颜色匹配的小图片。

(4) 将小图片粘贴到对应的马赛克格子中。

保存并测试结果。

(1) 将生成的马赛克图像保存到指定路径。

(2) 检查输出文件夹以确认图像是否正确生成。

实验结果:

  1. 写个简单的Python程序,完成指定操作。
1
2
original_image = Image.open(input_path)
    original_image.save(f'{output_dir}/exp1_1_1.jpg')

img

图 1原始图像
1
2
    resized_image = original_image.resize((640, 480))
    resized_image.save(f'{output_dir}/exp1_1_2.jpg')

img

图 2改变大小之后的图像
1
2
    bw_image = resized_image.convert('L')
    bw_image.save(f'{output_dir}/exp1_1_3.jpg')

img

图 3灰度化之后的图像
1
bw_image.save(f'{output_dir}/exp1_1_4.gif')

img

图 4将黑白图像存成gif格式
  1. 马赛克图像合成

准备实验环境和素材:

确保安装了Python图像处理库Pillow和数学运算库NumPy

在代码中设置目标图像(target_image_path)和小图片集合(icon_folder)的路径。

处理小图片集:

使用get_average_color(image)函数计算每个小图片的平均颜色。这个函数接收一个图像对象作为参数,计算其在RGB颜色空间中的平均颜色,并返回表示这种颜色的元组。

resize_icons(icon_folder, icon_size)函数遍历小图片所在的文件夹,并将每张图片调整到指定的大小。这是为了使得小图片与马赛克图像的每个格子大小相匹配。

实现马赛克图像合成:

create_photo_mosaic(target_image_path, icons, grid_size)函数用于创建马赛克图像。

首先,该函数调整目标图像的大小,使其与马赛克网格的大小匹配。

接着,它将目标图像分割成与网格大小相匹配的小区域。

对于每个区域,函数找到颜色最接近该区域平均颜色的小图片,并将其放置在相应的位置上。

保存并测试结果:

一旦马赛克图像创建完毕,使用mosaic_image.save(output_path)将其保存到指定路径。

保存后的马赛克图像可以在指定的输出中查看。

效果浏览:

grid_size = (5, 5):

img

grid_size = (4, 4):

img

grid_size = (3, 3):

img

grid_size = (3, 2):

img

grid_size = (2, 3):

img

grid_size = (1, 1):

img

实验总结:

通过实验第一部分,我学会了如何使用Python及其第三方库Pillow进行基本的图像处理操作。这个实验让我体会到了Python在图像处理方面的强大和灵活性。通过简单的代码,我能够打开图像,改变其大小,将其转换为黑白图像,甚至将其保存为不同的格式,如GIF。这些操作在数字图像处理中非常常见,而Python使这些操作变得易于实现和理解。

实验中,我首先引入了Python的图像处理库Pillow,然后使用它提供的Image对象来进行各种图像操作。例如,我利用open函数打开了一幅图像,然后通过resize方法将图像的尺寸更改为640x480像素。接着,我使用了convert方法将图像转换为灰度(黑白)图像,最后通过save方法将处理后的图像保存下来。这个过程不仅加深了我对图像处理基础概念的理解,也提高了我使用编程语言来解决实际问题的能力。

在实验第二部分中,我进行了更为复杂的图像处理操作,即马赛克图像合成。这个过程包括创建一个由许多小图像组合成的大图像。我学会了如何处理和调整多个图像,以便将它们组合成一个单一的、具有视觉效果的图像。依靠准备的目标图像和小图片素材,编写了函数来计算小图片的平均颜色并调整其大小。之后,我通过比较颜色相似性来选择最合适的小图片,并将它们粘贴到目标图像的相应位置上。这个实验不仅锻炼了我的编程技能,还增强了我在创意图像处理方面的能力。

总的来说,这个实验不仅提高了我的Python编程能力,还让我对数字图像处理有了更深刻的理解。通过这些实验,我学会了如何使用编程工具来创造和操纵图像,这将对我的未来学习和职业发展大有裨益。

  • Title: 图像处理与分析——实验一-数字图像处理相关软件学习
  • Author: ELecmark
  • Created at : 2024-03-20 01:02:49
  • Updated at : 2024-04-15 16:41:34
  • Link: https://elecmark.github.io/2024/03/20/图像处理与分析——实验一-数字图像处理相关软件学习/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
图像处理与分析——实验一-数字图像处理相关软件学习