Python 实现PS滤镜的旋涡特效
作者:未雨愁眸 发布时间:2022-03-03 02:53:52
标签:python,ps滤镜,漩涡
实现效果:
实现代码
import numpy as np
from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import math
import numpy.matlib
file_name2='D:/2020121173119242.png' # 图片路径
img=io.imread(file_name2)
img = img_as_float(img)
row, col, channel = img.shape
img_out = img * 1.0
degree = 70
center_x = (col-1)/2.0
center_y = (row-1)/2.0
xx = np.arange (col)
yy = np.arange (row)
x_mask = numpy.matlib.repmat (xx, row, 1)
y_mask = numpy.matlib.repmat (yy, col, 1)
y_mask = np.transpose(y_mask)
xx_dif = x_mask - center_x
yy_dif = center_y - y_mask
r = np.sqrt(xx_dif * xx_dif + yy_dif * yy_dif)
theta = np.arctan(yy_dif / xx_dif)
mask_1 = xx_dif < 0
theta = theta * (1 - mask_1) + (theta + math.pi) * mask_1
theta = theta + r/degree
x_new = r * np.cos(theta) + center_x
y_new = center_y - r * np.sin(theta)
int_x = np.floor (x_new)
int_x = int_x.astype(int)
int_y = np.floor (y_new)
int_y = int_y.astype(int)
for ii in range(row):
for jj in range (col):
new_xx = int_x [ii, jj]
new_yy = int_y [ii, jj]
if x_new [ii, jj] < 0 or x_new [ii, jj] > col -1 :
continue
if y_new [ii, jj] < 0 or y_new [ii, jj] > row -1 :
continue
img_out[ii, jj, :] = img[new_yy, new_xx, :]
plt.figure (1)
plt.imshow (img)
plt.axis('off')
plt.figure (2)
plt.imshow (img_out)
plt.axis('off')
plt.show()
来源:https://www.cnblogs.com/mtcnn/p/9412156.html


猜你喜欢
- 业务背景最近接到一个需求,在微信公众号界面设计一个独立界面,界面上有 A 电机进、A 电机退、B 电机进、B 电机退 4 个按钮,点击对应按
- 表单递交合法性检测-只接受数字。如下代码加入HTML的<head>区:<SCRIPT LANGUAGE=&quo
- 前言平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用ob
- 一、Mock介绍1、什么是Mock模拟接口接口Mock测试:在接口测试中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替2
- 在开发中中我们经常会使用到数据库连接池,比如dbcp数据库连接池,本章将讲解java连接dbcp数据库库连接池的简单使用。开发工具myecl
- 1、随机生成0-1的浮点数random.randomrandom.random()用于生成一个0到1的随机浮点数: 0 <= n &l
- 在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值。在MSSQL中是这样完成的: stri
- 0.前言添加colormap的对象是灰度图,可以变成热量图,从而更加明显的发现一些规律,适用于一些雷达图像等from PIL import
- 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是
- QueueTornado的tornado.queue模块为基于协程的应用程序实现了一个异步生产者/消费者模式的队列。这与python标准库为
- 在Python中可以通过几种方法调用C++的函数,这里介绍使用ctypes的方法。ctypes是Python自带的一个模块,能够直接载入C+
- 本文实例讲述了Python3实现将文件归档到zip文件及从zip文件中读取数据的方法。分享给大家供大家参考。具体实现方法如下:'
- Deferred对象结构Deferred由一系列成对的回调链组成,每一对都包含一个用于处理成功的回调(callbacks)和一个用于处理错误
- 前言点击视频讲解更加详细this.$route:当前激活的路由的信息对象。每个对象都是局部的,可以获取当前路由的 path, na
- 本文实例讲述了Python md5与sha1加密算法。分享给大家供大家参考,具体如下:MD5MD5的全称是Message-Digest Al
- 相比于原生的python开发核心包,Anaconda已经集成了许多的第三方库,但是这在实际应用中是远远不够的,因此我们需要手动安装第三方库使
- 语音识别是计算机软件识别口语中的单词和短语,并将其转换为可读文本的能力。那么如何在 Python 中将语音转换为文本?如何使用 Speech
- 我们知道,在面向对象编程里面, 继承 是一个很重要的概念。子类可以使用父类的方法和属性。例如下面这段代码:class Father: &nb
- 技术栈vue.js 主框架vuex 状态管理vue-router 路由管理一般过程在一般的登录过程中,一种前端方案是:检查状态:进入页面时或
- Go被设计为一种后台语言,它通常也被用于后端程序中。服务端程序是GO语言最常见的软件产品。在这我要解决的问题是:如何干净利落地升级正在运行的