【个人】项目实训 _ 图片风格_光照滤镜


一、光照滤镜核心代码

新建 light_effect.py 文件

import cv2
import math
import numpy as np

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

    # 获取图像的行和列
    original_rows, original_cols = original_image.shape[:2]

   #设置中心点
    centerX = original_rows/2
    centerY = original_cols/2
    radius = min(centerX,centerY)

    #设置光照强度
    strength = 200

    #新建目标图像
    light_effect_img = np.zeros((original_rows,original_cols,3),dtype="uint8")

    #图片光照特效
    for i in range(original_rows):
        for j in range(original_cols):
            #计算当前点到光照中心的距离
            distance = math.pow(centerX-i,2)+math.pow(centerY-j,2)
            #获取原始图像
            R = original_image[i,j][0]
            G = original_image[i,j][1]
            B = original_image[i,j][2]
            if(distance<radius*radius):
                #按照距离大小计算增强的光照值
                result = (int)(strength*(1.0-math.sqrt(distance)/radius))
                R = original_image[i,j][0] +result
                G = original_image[i,j][1] +result
                B = original_image[i,j][2] +result
                #判断边界,防止越界
                R = min(255,max(0,R))
                G = min(255,max(0,G))
                B = min(255,max(0,B))
                light_effect_img[i,j] = np.uint8((R,G,B))
            else:
                light_effect_img[i, j] = np.uint8((R, G, B))


    instance.m_image = light_effect_img
    instance.updata_image()

代码思想:

设置光照中心,再根据每个像素到光照中心的距离计算增强的光照值。


二、UI界面

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

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

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

引入模块

from part3 import m_init_style_transfer,glass_effect,paint_effect,pasttime_effect,light_effect

定义信号发射函数

    def light_effect_emit(self):
        light_effect.lighteffect_fun(self)

三、实现效果

效果如下:

光照滤镜效果


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值