一、流年滤镜核心代码
新建 liunian_effect.py 文件
import cv2 as cv
import math
import numpy as np
def liunianeffect_fun(instance):
#读取原始图像
img = instance.m_image
#获取图像行和列
rows, cols = img.shape[:2]
#新建目标图像
dst = img
#图像流年特效
for i in range(rows):
for j in range(cols):
#B通道的数值开平方乘以参数12
dst[i,j][0] = math.sqrt(img[i,j][0]) * 13
dst[i,j][1] = img[i,j][1]
dst[i,j][2] = img[i,j][2]
if dst[i,j][0]>255:
dst[i,j][0] = 255
instance.m_image = dst
instance.updata_image()
二、UI界面
1.在对应UI.py文件中添加action
# 创建一个action,当该action被触发时显示流年特效处理后的图片
action_liunian_show = QAction('&流年滤镜', instance)
action_liunian_show.triggered.connect(instance.liunian_effect_emit)
# 艺术风格迁移选项新增一个action:流年滤镜
tempMenu.addAction(action_liunian_show)
2.在主UI.py文件中添加信号发射函数
引入模块
from part3 import liunian_effect
定义信号发射函数
def liunian_effect_emit(self):
liunian_effect.liunianeffect_fun(self)
三、效果
效果如下: