首页 > 编程语言 >基于Python控制台开发的图像灰度化和滤波处理系统

基于Python控制台开发的图像灰度化和滤波处理系统

时间:2024-12-29 12:26:10浏览次数:7  
标签:Python image 滤波 处理 灰度 图像 控制台 加载

以下是一个适合大一、大二学生基于Python控制台开发的图像灰度化和滤波处理系统的课程设计程序。该程序使用Python的PillowNumPy库,实现了加载图像、灰度化处理和应用滤波操作等功能,提供一个控制台交互的用户界面。

程序功能描述

  1. 加载图像:从用户提供的文件路径加载图像。
  2. 显示图像:在窗口中显示原始图像或处理后的图像。
  3. 灰度化处理:将彩色图像转换为灰度图像。
  4. 滤波操作
  • 模糊滤波。
  • 边缘检测滤波。
  • 锐化滤波。
  1. 用户交互:通过控制台菜单选择操作。

部分代码实现

from PIL import Image, ImageFilter
import numpy as np
import matplotlib.pyplot as plt

# 全局变量
loaded_image = None


def load_image(file_path):
    """
    加载图像
    :param file_path: 图像文件路径
    :return: 加载的图像对象
    """
    try:
        image = Image.open(file_path)
        print("图像加载成功!")
        return image
    except Exception as e:
        print(f"图像加载失败:{e}")
        return None


def display_image(image, title="图像"):
    """
    显示图像
    :param image: 要显示的图像对象
    :param title: 窗口标题
    """
    plt.imshow(image, cmap="gray")
    plt.title(title)
    plt.axis("off")
    plt.show()



功能实现说明

  1. 加载图像
  • 使用Pillow库的Image.open()方法加载图像。
  • 提供友好的错误提示,帮助用户处理文件路径错误。
  1. 显示图像
  • 使用matplotlib.pyplotimshow方法显示图像。
  • 支持显示灰度图和彩色图。
  1. 灰度化处理
  • 使用Pillowconvert("L")方法将彩色图像转换为灰度图。
  1. 滤波处理
  • 提供三种滤波操作:
  • 模糊滤波(ImageFilter.BLUR
  • 边缘检测(ImageFilter.FIND_EDGES
  • 锐化滤波(ImageFilter.SHARPEN
  1. 用户交互
  • 提供简洁的控制台菜单,方便用户选择不同的图像处理操作。
  • 支持按序加载图像、显示图像、处理图像等操作。

运行示例

  1. 启动程序
欢迎使用图像灰度化和滤波处理系统
请选择操作:
1. 加载图像
2. 显示图像
3. 图像灰度化
4. 应用模糊滤波
5. 应用边缘检测滤波
6. 应用锐化滤波
7. 退出系统
  1. 加载图像
请输入图像文件路径:example.jpg
图像加载成功!
  1. 显示图像:打开一个窗口显示加载的原始图像。
  2. 灰度化

图像已灰度化!

  1. 模糊滤波
已应用模糊滤波!
  1. 边缘检测滤波
已应用边缘检测滤波!
  1. 锐化滤波
已应用锐化滤波!
  1. 退出系统
退出系统,再见!

扩展方向

  1. 添加更多滤波器
  • 例如高斯滤波、图像平滑等。
  • 自定义滤波器(例如卷积操作实现自定义核)。
  1. 支持保存图像
  • 提供功能将处理后的图像保存到本地。
  1. 添加批量处理功能
  • 允许用户选择多个图像进行处理。
  1. GUI界面
  • 使用TkinterPyQt开发图形化用户界面,提升用户体验。

总结

该系统通过控制台实现了图像加载、灰度化和滤波操作的功能,逻辑简单清晰,适合初学者练习图像处理的基础知识和编程能力。同时,该设计也为后续扩展提供了良好的框架,学生可以在此基础上加入更多功能,进一步探索图像处理技术。

灰度前效果:

灰度后效果:

模糊滤波:

边缘检测滤波:

标签:Python,image,滤波,处理,灰度,图像,控制台,加载
From: https://blog.csdn.net/laoman456/article/details/144803466

相关文章

  • 10个简单但很有用的Python装饰器
    10个简单但很有用的Python装饰器https://zhuanlan.zhihu.com/p/6474274711、@timer:测量执行时间优化代码性能是非常重要的。@timer装饰器可以帮助我们跟踪特定函数的执行时间。通过用这个装饰器包装函数,我可以快速识别瓶颈并优化代码的关键部分。下面是它的工作原理:impor......
  • python 赋值、深拷贝浅拷贝及切片使用
    赋值、深浅拷贝先复习一下赋值与深浅拷贝i=[1,2,1,3,[1,2]]j=i#赋值k=i.copy()#浅拷贝m=copy.deepcopy(i)#深拷贝#赋值,二者物理地址相同,一方变化另一方同步变化j.pop(0)print(i,j)[2,1,3,[1,2]][2,1,3,[1,2]]#取浅拷贝,二者物理......
  • Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
    近期Python生态系统发生了重要变化,特别是在包管理领域。Anaconda对其商业许可证政策进行了调整,要求大型非营利组织(员工超过200人)需要为使用其默认包仓库的每位用户获取商业许可。这一变化促使开发社区开始寻找更开放的解决方案,特别是考虑到Python本身及其大多数包都是开源的这一事......
  • 【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Pytho
         ......
  • 如何禁用在浏览器打开控制台?
    在前端开发中,禁用浏览器控制台并非一个推荐的做法,因为它可能侵犯了用户的权益,并且从技术上讲,无法完全阻止用户打开控制台。然而,如果你有特殊需求或想要增加一些障碍来阻止普通用户轻易地打开控制台,以下是一些可以尝试的方法:监听键盘事件:通过JavaScript监听键盘的特定按键组合......
  • 8天学习python笔记
    day01计算机基础和环境搭建1.计算机基础1.1基本概念计算机的组成计算机由多个硬件组合而成,常见的硬件有:cpu,硬盘,内存,网卡,显示器,机箱,电源....注意事项:机械将零件组合在一起,他们之间是无法进行的协作。操作系统windos:生态好,工具多,收费,略慢linux:资源占用少,免费,工具少m......
  • Python 潮流周刊#83:uv 的使用技巧(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2300字。以下是本期摘要:......
  • Python Cookbook(第3版)中文版-PDF免费下载
    PythonCookbook(第3版)中文版-PDF免费下载适读人群:Python程序开发人员、编程爱好者、在校大学生电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:https://item.jd.com/13897579.htmlPython图书升级版本,Python编程从入门到实践,涵盖Python3.3,包含大量实用Pyt......
  • 《100天学习Python:从入门到精通》——第2天:Python数据类型
    大家好啊,今天是我创作的第二天了,今天我就来和大家分享一下关于Python的各种数据类型。首先,今天介绍的代码里的函数和类都可以在builtins.py里面找到,builtins.py是Python的最基础的一些函数以及类定义的一个程序。一.int类大家应该看过这么一段程序吧:a='1'a=int(a)这就是......
  • 探索CSDN博客数据:使用Python爬虫技术
    探索CSDN博客数据:使用Python爬虫技术在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和pyquery库之间,探索如何撷取CSDN博客的点滴信息,并进......