前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用scipy处理图片——滤镜处理

使用scipy处理图片——滤镜处理

作者头像
方亮
发布于 2024-01-18 00:39:43
发布于 2024-01-18 00:39:43
34900
代码可运行
举报
文章被收录于专栏:方亮方亮
运行总次数:0
代码可运行

black_tophat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'black_tophat.png', ndimage.black_tophat, 1, 91, 10)

对应的size(ndimage.black_tophat第二个参数)的值

1

11

21

31

41

51

61

71

81

white_tophat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.white_tophat(args[0], args[1])

generate('lena.png', 'white_tophat.png', func, 1, 91, 10)

对应的size(ndimage.white_tophat第二个参数)的值

1

11

21

31

41

51

61

71

81

convolve

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    weights = np.eye(args[1])
    return ndimage.convolve(args[0], weights)

generate('lena.png', 'convolve.png', func, 1, 10, 1)

对应的weights(ndimage.convolve第二个参数)的维度是

1

2

3

4

5

6

7

8

9

correlate

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    weights = np.eye(args[1])
    return ndimage.correlate(args[0], weights)

generate('lena.png', 'correlate.png', func, 1, 10, 1)

对应的weights(ndimage.correlate第二个参数)的维度是

1

2

3

4

5

6

7

8

9

gaussian_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'gaussian_filter.png', ndimage.gaussian_filter, 1, 10, 1)

对应的sigma(ndimage.gaussian_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

gaussian_laplace

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'gaussian_laplace.png', ndimage.gaussian_laplace, 0.2, 1.9, 0.2)

对应的sigma(ndimage.black_tophat第二个参数)的值

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

maximum_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'maximum_filter.png', ndimage.maximum_filter, 1, 10, 1)

对应的size(ndimage.maximum_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

median_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'median_filter.png', ndimage.median_filter, 1, 10, 1)

对应的size(ndimage.median_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

minimum_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'minimum_filter.png', ndimage.minimum_filter, 1, 10, 1)

对应的size(ndimage.minimum_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

percentile_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.percentile_filter(args[0], percentile=args[1], size=args[1])

generate('lena.png', 'percentile_filter.png', func, 1, 10, 1)

对应的percentile和size(ndimage.percentile_filter第二、三个参数)的值

1

2

3

4

5

6

7

8

9

prewitt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.prewitt(args[0])

generate('lena.png', 'prewitt.png', func, 1, 2, 1)

rank_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.rank_filter(args[0], rank=args[1], size=args[1]*2)

generate('lena.png', 'rank_filter.png', func, 1, 10, 1)

对应的rank(ndimage.rank_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

对应的size(ndimage.rank_filter第三个参数)的值

2

4

6

8

10

12

14

16

18

sobel

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.sobel(args[0])

generate('lena.png', 'sobel.png', func, 1, 2, 1)

spline_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.spline_filter(args[0], args[1]).astype(np.uint8)

generate('lena.png', 'spline_filter.png', func, 2, 5, 1)

对应的size(ndimage.black_tophat第二个参数)的值

2

3

4

uniform_filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.uniform_filter(args[0], args[1])

generate('lena.png', 'uniform_filter.png', func, 1, 10, 1)

对应的size(ndimage.uniform_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

基础代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# frame.py
import numpy as np
from PIL import Image
import scipy.ndimage as ndimage

def generate(image_from, image_to, filter, start = 1, end = 10, step = 1):
    source = np.array(Image.open(image_from))

    colorDim3List = np.dsplit(source, 3)
    red = colorDim3List[0].reshape(source.shape[0], source.shape[1])
    green = colorDim3List[1].reshape(source.shape[0], source.shape[1])
    blue = colorDim3List[2].reshape(source.shape[0], source.shape[1])

    def inline_filter(red, green, blue, some_value):
        redFilter = filter(red, some_value)
        greenFilter = filter(green, some_value)
        blueFilter = filter(blue, some_value)
        return np.dstack((redFilter, greenFilter, blueFilter))

    varrays = []
    harrays = []
    hindex = 0
    for i in np.arange(start, end, step):
        filter3D = inline_filter(red, green, blue, i)
        harrays.append(filter3D)
        hindex += 1
        if hindex % 3 == 0:
            varrays.append(np.hstack(harrays))
            harrays = []
            hindex = 0
            
    if varrays == []:
        varrays.append(np.hstack(harrays))
            
    full3D = np.vstack(varrays)
    Image.fromarray(full3D).save(image_to)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
跨域问题及解决方案
跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript 施加的安全限制。
乐心湖
2021/01/18
5450
跨域问题及解决方案
别在问我跨域问题了,跨域详解以及前端、后端、运维解决的方法统统写在这里了。
跨域问题一直是前端的一大难题,从前端出道到至今,无论是自己还是身边的同事,以及网上前端朋友都被这个问题困扰着。
星宇大前端
2022/03/09
39.9K0
别在问我跨域问题了,跨域详解以及前端、后端、运维解决的方法统统写在这里了。
5年经验程序员被问:前后端分离后,如何解决跨域问题?
做Web开发,经常会遇到跨域问题,小伙伴们在面试中,也经常被问到。这不,又有一位工作3年的小伙伴被问到这样一道题,说前后端分离后,如何解决跨域问题?
Tom弹架构
2023/09/07
2.2K0
5年经验程序员被问:前后端分离后,如何解决跨域问题?
前端之跨域
根据浏览器制定的同源策略,不是同源情况下也就是不同端口、不同域名、不同协议的数据交互会产生跨域
全栈开发Dream
2021/05/13
5720
前端之跨域
跨域详解及Spring Boot 3中的跨域解决方案
跨域问题是Web开发中常见的一个问题,尤其在前后端分离的项目中更为常见。本文将为大家介绍跨域的概念、产生原因、影响以及Spring Boot 3中如何解决跨域问题。
修己xj
2024/05/22
6310
跨域详解及Spring Boot 3中的跨域解决方案
网站跨域的五种解决方式
等带有src属性的标签可以从不同的域加载和执行资源。其他插件的同源策略:flash、java applet、silverlight、googlegears等浏览器加载的第三方插件也有各自的同源策略,只是这些同源策略不属于浏览器原生的同源策略,如果有漏洞则可能被黑客利用,从而留下XSS攻击的后患
云扬四海
2019/06/05
1.4K0
js ajax 跨域问题 解决方案[通俗易懂]
跨域问题来源于JavaScript的”同源策略”,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。
全栈程序员站长
2022/09/25
1.8K0
js ajax 跨域问题 解决方案[通俗易懂]
一文带你了解跨域的前因后果和解决方案
在了解跨域之前,我们必须要了解一下同源策略。 跨域问题其实就是浏览器的同源策略造成的。
用户6297767
2023/12/23
4820
一文带你了解跨域的前因后果和解决方案
再一次折腾跨域问题
跨域问题在前后端分离的开发场景中经常遇到,回想起来自己也已经折腾了数次,本篇文章主要对跨域问题做个记录和总结。
云原生
2022/03/30
5050
CORS跨域问题及解决方案详解
CORS(Cross-Origin Resource Sharing,跨域资源共享)跨域问题源于浏览器的同源策略。同源策略是浏览器的一种安全机制,它要求浏览器在访问一个资源时,该资源的协议、域名和端口必须与当前页面的协议、域名和端口完全一致,否则就会被视为跨域请求,浏览器会对这类请求进行限制。
威哥爱编程
2025/02/25
6000
SpringBoot 中解决跨域问题的 5 种方法!
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
业余草
2021/12/06
3.8K0
SpringBoot 中解决跨域问题的 5 种方法!
什么是跨域及怎么解决跨域问题?[通俗易懂]
这篇博文解释的挺清楚,我直接引用 什么是跨域?怎么解决跨域问题?_L瑜-CSDN博客_跨域是什么意思
全栈程序员站长
2022/08/11
13.1K0
什么是跨域及怎么解决跨域问题?[通俗易懂]
Spring Boot 2.x (三): 跨域处理方案之 Cor
URI 文法由 URI 协议名(例如 “http”,“ftp”,“mailto” 或 “file”),一个冒号,和协议对应的内容所构成。特定的协议定义了协议内容的语法和语义,而所有的协议都必须遵循一定的 URI 文法通用规则,亦即为某些专门目的保留部分特殊字符。
阿宝哥
2019/11/05
1.6K0
SpringBoot应用跨域访问解决方案
说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。
字母哥博客
2020/09/23
1.2K0
SpringBoot应用跨域访问解决方案
怎么解决跨域
存在浏览器同源策略,所以才会有跨域问题。那么浏览器是出于何种原因会有跨域的限制呢。其实不难想到,跨域限制主要的目的就是为了用户的上网安全。
程序员子龙
2024/04/30
2460
你所需要的跨域问题的全套解决方案都在这里啦!(升级版)
随着RESTful架构风格成为主流,以及Vue.js、React.js和Angular.js这三大前端框架的日益强大,越来越多的开发者开始由传统的MVC架构转向基于前后端分离这一基础架构来构建自己的系统,将前端页面和后端服务分别部署在不同的域名之下。在此过程中一个重要的问题就是跨域资源访问的问题,通常由于同域安全策略浏览器会拦截JavaScript脚本的跨域网络请求,这也就造成了系统上线时前端无法访问后端资源这一问题。笔者将结合自身开发经验,对这一问题产生的原因以及相应的解决方案,给出详细介绍。
一只图雀
2020/04/07
1.1K0
前后端分离项目,如何解决跨域问题?
跨域问题是前后端分离项目中非常常见的一个问题,举例来说,编程猫(codingmore)学习网站的前端服务跑在 8080 端口下,后端服务跑在 9002 端口下,那么前端在请求后端接口的时候就会出现跨域问题。
沉默王二
2022/03/07
2.7K0
前后端分离项目,如何解决跨域问题?
java跨域问题
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
一个风轻云淡
2023/10/15
3050
SpringBoot教程(七) | SpringBoot解决跨域问题
上篇文章我们介绍了SpringBoot的拦截器的写法,其中有一个比较重要的步骤,就是把我们写好的拦截器注册到Spring的一个配置类中,这个类是实现了WebMvcConfigurer 接口,这个类很重要,因为这个类中除了可以注册拦截以外,还可以配置很多内容。今天我们来讲解一下SpringBoot如何解决跨域问题。 先来解释一下什么是跨域问题。
一缕82年的清风
2022/04/08
9970
SpringBoot教程(七) | SpringBoot解决跨域问题
【SpringSecurity系列(二十八)】当跨域遇上 Spring Security
跨域这个问题松哥之前写过文章,但是最近收到小伙伴们的一些问题,让我发现之前的总结不够全面,因此打算再写一篇文章,来和大家分享一下 Spring Boot 中的跨域问题。
江南一点雨
2021/08/06
6.2K1
【SpringSecurity系列(二十八)】当跨域遇上 Spring Security
相关推荐
跨域问题及解决方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验