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

Python面向对象,实现图片处理案例,支持:高斯模糊、Canny边缘检测、反转边缘图像、生成手绘效果、调亮度......等等

实验图片如下:
命名为img1.jpg, 放在项目下新建文件夹images下
在这里插入图片描述
项目构造如下:
在这里插入图片描述

app.py源码如下

import cv2
import os
from matplotlib import pyplot as plt
import numpy as npclass ImageProcessor:def __init__(self, image_path):self.image = cv2.imread(image_path)  # Load the imageif self.image is None:raise ValueError("Image not found or unable to load.")self.image = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)  # Convert to RGB formatself.gray_image = cv2.cvtColor(self.image, cv2.COLOR_RGB2GRAY)  # Convert to grayscaleself.blurred_image = Noneself.edges = Noneself.inverted_edges = Noneself.cartoon_image = Noneself.save_counter = 0def apply_gaussian_blur(self, ksize=(5, 5), sigmaX=0):self.blurred_image = cv2.GaussianBlur(self.gray_image, ksize, sigmaX)self.cartoon_image = self.blurred_image  # Assuming cartoon_image should be blurred initiallyself.save_counter += 1self.save_image(f'new{self.save_counter}.jpg')def detect_edges(self, threshold1=50, threshold2=150):self.apply_gaussian_blur()self.edges = cv2.Canny(self.blurred_image, threshold1, threshold2)self.cartoon_image = self.edges  # Assuming cartoon_image should show edges initiallyself.save_counter += 1self.save_image(f'new{self.save_counter}.jpg')def invert_edges(self):self.detect_edges()self.inverted_edges = cv2.bitwise_not(self.edges)self.cartoon_image = self.inverted_edges  # Assuming cartoon_image should show inverted edges initiallyself.save_counter += 1self.save_image(f'new{self.save_counter}.jpg')def create_cartoon_effect(self):self.invert_edges()# Create a cartoon effect by combining edges and original imagecolor_image = cv2.bilateralFilter(self.image, d=9, sigmaColor=75, sigmaSpace=75)self.cartoon_image = cv2.bitwise_and(color_image, color_image, mask=self.inverted_edges)self.save_counter += 1self.save_image(f'new{self.save_counter}.jpg')def save_image(self, filename):if self.cartoon_image is None or self.cartoon_image.size == 0:print("Cartoon image is empty, skipping save.")returnif not os.path.exists('../newImg'):os.makedirs('../newImg')cv2.imwrite(f'newImg/{filename}', cv2.cvtColor(self.cartoon_image, cv2.COLOR_RGB2BGR))print(f"图片已保存为 newImg/{filename}")def show_images(self):plt.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴负号显示问题plt.figure(figsize=(10, 10))plt.subplot(1, 2, 1)plt.title("原图片")plt.imshow(self.image)plt.axis('off')plt.subplot(1, 2, 2)plt.title("处理后的图片")plt.imshow(self.cartoon_image)plt.axis('off')plt.show()def main():image_path = '../images/img1.jpg'  # 请确保路径正确processor = ImageProcessor(image_path)while True:print("\n请选择图片处理功能编号:")print("1 - 高斯模糊")print("2 - Canny边缘检测")print("3 - 反转边缘图像")print("4 - 生成手绘效果")print("5 - 显示图片")print("0 - 退出")choice = input("输入你的选择:")if choice == '1':processor.apply_gaussian_blur()print("高斯模糊已应用并保存。")elif choice == '2':processor.detect_edges()print("Canny边缘检测已应用并保存。")elif choice == '3':processor.invert_edges()print("边缘图像已反转并保存。")elif choice == '4':processor.create_cartoon_effect()print("手绘效果已生成并保存。")elif choice == '5':processor.show_images()elif choice == '0':print("退出程序。")breakelse:print("无效的输入,请重新输入。")if __name__ == "__main__":main()

终端运行效果:
在这里插入图片描述
生成手绘照片处理效果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

Python面向对象,实现图片处理案例,支持:高斯模糊、Canny边缘检测、反转边缘图像、生成手绘效果、调亮度......等等

实验图片如下: 命名为img1.jpg, 放在项目下新建文件夹images下 项目构造如下: app.py源码如下 import cv2 import os from matplotlib import pyplot as plt import numpy as npclass ImageProcessor:def __init__(self, image_path):self.image cv…...

SOLID - 依赖倒置原则(Dependency Inversion Principle)

SOLID - 依赖倒置原则(Dependency Inversion Principle) 定义 依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的五大基本原则之一,通常缩写为SOLID中的D。DIP由Robert C. Martin提出&…...

【.NET 8 实战--孢子记账--从单体到微服务】--需求拆分与规划

在上一篇文章中我们收集了需求,并对需求进行了简单的分析和规划,但是对于开发人员来说,上一篇文章的需求还不够详细,并且没有形成计划。因此本篇文章将带领大家来拆分需求并规划开发里程碑。 一、详细需求列表 项目组进行了多次…...

在macOS的多任务处理环境中,如何平衡应用的性能与用户体验?这是否是一个复杂的优化问题?如何优化用户体验|多任务处理|用户体验|应用设计

目录 一 多任务处理与应用性能 1. macOS中的多任务处理机制 2. 性能优化的基本策略 二 用户体验的关键要素 1. 响应速度 2. 界面友好性 3. 功能的直观性 三 平衡性能与用户体验的策略 1. 资源管理 2. 优化数据加载 3. 使用合适的线程模型 4. 实时监测和调整 四 使…...

Vscode配置CC++编程环境的使用体验优化和补充说明

文章目录 快速编译运行👺code runner插件方案Code Runner Configuration 直接配置 相关指令和快捷键默认task配置和取消默认 配置文件补充介绍(可选 推荐阅读)😊使用vscode预置变量和环境变量环境变量的使用使用环境变量的好处环境变量可能引起的问题 检…...

十个方法杜绝CAD图纸泄密风险!2024年图纸防泄密指南!「必看」

随着信息技术的发展,CAD图纸的应用日益普遍,然而随之而来的图纸泄密风险也愈加严重。企业在提升效率的同时,更需重视信息安全。为此,本文将介绍十个有效的方法,帮助企业杜绝CAD图纸泄密风险,保障商业机密。…...

技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 1

虚拟风洞VWT 从2023版本开始,虚拟风洞VWT(Virtual Wind Tunnel)模块合并到HyperMesh CFD中。 用户在VWT模块中完成LBM求解器ultraFluidX的前处理设置,导出参数文件XML和模型文件STL,并在GPU服务器上提交计算。 VWT目前…...

022集——统计多条线的总长度(CAD—C#二次开发入门)

如下图所示,选择多条线并统计长度: c#中不包含直接获取curve曲线长度 属性,需用如下方法:curve.GetDistanceAtParameter(item.EndParam) 附部分代码如下: using Autodesk.AutoCAD.ApplicationServices; using Autode…...

大模型重要技术系列三:高效推理

接上一篇高效训练,这一篇汇总下高效推理的方法。高效推理的两个主要优化目标是低延迟(快速得到推理结果)和高吞吐量(能同时处理很多请求),同时还要尽可能地少用资源(算力、存储、网络带宽&#…...

Android 刘海屏适配指南

如果您不希望您的内容与刘海区域重叠, 以确保您的内容不会与状态栏及 导航栏。如果您要呈现在刘海区域中,请使用 WindowInsetsCompat.getDisplayCutout() 检索 DisplayCutout 对象 包含每个刘海屏的安全边衬区和边界框。借助这些 API 您需要检查视频内容…...

微信小程序服务通知

项目中用到了小程序的服务消息通知,通知订单状态信息,下边就是整理的一下代码,放到项目中,把项目的小程序appid和小程序的secret写进去,直接运行即可 提前申请好小程序服务信息通知短信模板,代码需要用到模…...

Ubuntu使用Qt虚拟键盘,支持中英文切换

前言 ​ 最近领导给了个需求,希望将web嵌入到客户端里面,做一个客户端外壳,可以控制程序的启动、停止、重启,并且可以调出键盘在触摸屏上使用(我们的程序虽然是BS架构,但程序还是运行在本地工控机上的),我…...

泰州农商行

该文章用于测试,暴露面检测服务 1595116111115951161112159511611131595116111415951161115159511611161595116111715951161118159511611191595116112015951161121159511611221595116112315951161124159511611251595116112615951161127159511611281595116112915951…...

扫雷(C语言)

目录​​​​​​​ 前言 一、前提知识 二、扫雷游戏编写 2.2 test文件基本逻辑 2.2.1菜单编写 2.2.2game函数的逻辑 2.2.2.1定义两个数组 2.2.2.2两个数组数组的初始化 2.2.2.3打印棋盘 2.2.2.4布置雷 2.2.2.5排查雷 2.2.2.6获取坐标附近雷的数量 2.2.2.7什么时候…...

【实践功能记录8】使用UseElementSize实现表格高度自适应

一、关于 UseElementSize UseElementSize 是一个 Vue 组合式 API 的实用工具,通常用于获取 DOM 元素的尺寸信息,例如宽度、高度等。它通常与 v-slot 一起使用,以便在模板中直接访问这些尺寸信息。 地址:https://vueuse.org/core/u…...

SMO算法 公式推导

min ⁡ α 1 2 ∑ i 1 N ∑ j 1 N α i α j y i y j K ( x i ⋅ x j ) − ∑ i 1 N α i s.t. ∑ i 1 N α i y i 0 0 ≤ α i ≤ C , i 1 , 2 , ⋯ , N (9-69) \begin{aligned} & \min_{\alpha} \quad \frac{1}{2} \sum_{i1}^{N} \sum_{j1}^{N} \alpha_i \alpha_j…...

nodejs包管理器pnpm

简介 通常在nodejs项目中我们使用npm或者yarn做为默认的包管理器,但是pnpm的出现让我们的包管理器有了更多的选择,pnpm相比npm具有以下优势: 速度更快,pnpm在安装依赖时,会将依赖包缓存到全局目录,下次安…...

【postman】工具下载安装

postman作用 postman用于测试http协议接口,无论是开发, 还是测试人员, 都有必要学习使用postman来测试接口, 用起来非常方便。 环境安装 postman 可以直接在chrome 上安装插件,当然大部分的同学是没法连接到谷歌商店的,我们可以在电脑本地…...

Java_Springboot核心配置详解

Spring Boot以其简洁、高效和约定优于配置的理念,极大地简化了Java应用的开发流程。在Spring Boot中,核心配置是应用启动和运行的基础。本文将详细介绍Spring Boot中的两种配置文件格式、基础注解的配置方式、自定义配置以及多环境配置。 一、Spring Bo…...

太速科技-9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

基于DSP TMS320C6678FPGA XC7V690T的6U VPX信号处理卡 一、概述 本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V690T-2FFG1761I作为主处理器&#…...

Python移动开发终极指南:5分钟学会用python-for-android打包Android应用

Python移动开发终极指南:5分钟学会用python-for-android打包Android应用 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 你是否想用熟悉的Python语…...

OpenClaw模型微调:优化千问3.5-35B-A3B-FP8在特定任务的表现

OpenClaw模型微调:优化千问3.5-35B-A3B-FP8在特定任务的表现 1. 为什么需要微调千问模型? 当我第一次尝试用OpenClaw自动化处理财务报告时,发现千问3.5-35B-A3B-FP8虽然能理解基本指令,但在处理表格数据提取和金额计算时频繁出错…...

2025届学术党必备的六大AI辅助写作网站横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能于学术论文写作里的应用愈发广泛,其核心价值展现成高效文献检索、结构化…...

Ubuntu18.04下Gazebo加载DEM高程图踩坑实录(附完整解决方案)

Ubuntu 18.04下Gazebo加载DEM高程图的完整实践指南 在机器人仿真和地理信息系统研究中,数字高程模型(DEM)是构建真实地形环境的关键数据。Gazebo作为一款功能强大的机器人仿真平台,支持DEM高程图的加载与渲染,但在实际…...

告别API依赖!实测具备“看屏幕”能力的Agent,实在Agent如何重构企业自动化天花板?

在2026年这个被业界公认为“智能体元年”的当下,企业数字化转型已从简单的“系统上线”演进到“全量自动化”的深水区。然而,传统API接口的局限性与老旧系统的数据孤岛,始终是横亘在降本增效路上的大山。本文由「企服AI产品测评局」带来深度实…...

3分钟搞定GitHub加速:国内开发者必备的免费终极解决方案

3分钟搞定GitHub加速:国内开发者必备的免费终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub龟…...

2026届最火的降重复率工具实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普平台针对AIGC技术的引入,制定了严谨的检测规范,在当前学术场景里…...

GESP2025年3月认证C++三级( 第三部分编程题(2、词频统计)

一、🧙‍♂️ 故事背景:单词王国选举大会 在“单词王国”里 🏰 有很多单词来参加“最受欢迎单词”比赛! 👉 比如: Apple banana apple Orange banana apple二、🎯 任务 👉 找出&…...

AA-PEG-Lipoic acid,硫辛酸PEG乙酸,显著提升稳定性和生物相容性

一.名称英文名称:AA-PEG-LA,AA-PEG-Lipoic acid,Acetic Acid-PEG-LA,Acetic Acid-PEG-Lipoic acid,LA-PEG-AA,Lipoic acid-PEG-AA中文名称:硫辛酸聚乙二醇乙酸,硫辛酸PEG乙酸分子量&…...

终极性能调优指南:如何配置dnstwist实现超高速域名扫描

终极性能调优指南:如何配置dnstwist实现超高速域名扫描 【免费下载链接】dnstwist Domain name permutation engine for detecting homograph phishing attacks, typo squatting, and brand impersonation 项目地址: https://gitcode.com/gh_mirrors/dn/dnstwist …...