【个人】项目实训 _ 图片风格_怀旧滤镜

2023-10-18 14:20

本文主要是介绍【个人】项目实训 _ 图片风格_怀旧滤镜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、怀旧滤镜核心代码
  • 二、UI界面
    • 1.更改glass_effect.py文件
    • 2.在对应UI.py文件中添加action
    • 3.在主UI.py文件中添加信号发射函数
  • 三、解决问题
  • 四、参考链接


一、怀旧滤镜核心代码

新建 pasttime_effect.py 文件

import cv2
import numpy as np#读取原始图片
original_image = cv2.imread('2.jpg')# 获取图像的行和列
original_rows, original_cols = original_image.shape[:2]#新建目标图像
pasttime_image = np.zeros((original_rows,original_cols,3),dtype="uint8")#图片怀旧特效
for i in range(original_rows):for j in range(original_cols):B = 0.272*original_image[i,j][2] + 0.534*original_image[i,j][1] + 0.131*original_image[i,j][0]G = 0.349*original_image[i,j][2] + 0.686*original_image[i,j][1] + 0.168*original_image[i,j][0]R = 0.393*original_image[i,j][2] + 0.769*original_image[i,j][1] + 0.189*original_image[i,j][0]if B>255:B=255if G>255:G=255if R>255:R=255pasttime_image[i,j] = np.uint8((B,G,R))# 处理完成,显示图像
cv2.imshow('original_image', original_image)
cv2.imshow('glass_effect_image', pasttime_image)cv2.waitKey()
cv2.destroyAllWindows()

代码思想:

图像怀旧特效是指图像经历岁月的昏暗效果,让图片变的偏黄偏暗,给人以怀旧复古的感觉。

可以利用怀旧 RGB 三色公式计算通道新数值:

    R2 = 0.393*R + 0.769*G + 0.189*BB2 = 0.272*R + 0.534*G + 0.131*BG2 = 0.349*R + 0.686*G + 0.168*B

效果如下:

在这里插入图片描述


二、UI界面

1.更改glass_effect.py文件

def pasttimeeffect_fun(instance):# 读取原始图像original_image = instance.m_image
    instance.m_image = pasttime_imageinstance.updata_image()

2.在对应UI.py文件中添加action

    # 创建一个action,当该action被触发时显示油漆特效处理后的图片action_pasttime_img_show = QAction('&怀旧滤镜', instance)action_pasttime_img_show.triggered.connect(instance.pasttime_effect_emit)# 艺术风格迁移选项新增一个action:怀旧滤镜tempMenu.addAction(action_pasttime_img_show)

3.在主UI.py文件中添加信号发射函数

引入模块

from part3 import m_init_style_transfer,glass_effect,paint_effect,pasttime_effect

定义信号发射函数

    def pasttime_effect_emit(self):pasttime_effect.pasttimeeffect_fun(self)

效果如下:

在这里插入图片描述


三、解决问题

使用界面后发现,效果图片时偏蓝色而非偏黄色,但是核心代码并没有改动。

此时,将核心代码中的 R 与 B 互换位置,即可得到真正的偏黄色的怀旧风格图片。

原因可能是使用界面进入的图片为 RGB 通道而非 BGR 通道。

R = 0.272 * original_image2[i, j][2] + 0.534 * original_image2[i, j][1] + 0.131 * original_image2[i, j][0]
G = 0.349 * original_image2[i, j][2] + 0.686 * original_image2[i, j][1] + 0.168 * original_image2[i, j][0]
B = 0.393 * original_image2[i, j][2] + 0.769 * original_image2[i, j][1] + 0.189 * original_image2[i, j][0]

效果如下:
在这里插入图片描述
成功。


四、参考链接

参考链接:图像处理:怀旧滤镜效果

这篇关于【个人】项目实训 _ 图片风格_怀旧滤镜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233114

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热