首先总体概括一下Scipy的用处

>>> #Scipy依赖于numpy
>>> #Scipy提供了真正的矩阵
>>> #Scipy包含的功能:最优化,线性代数,积分,插值,拟合,特殊函数,快速傅里叶变换,信号处理,图形处理,常微分方程求解器等
>>> #Scipy是高端科学计算工具包
>>> #Scipy由一些特殊功能的子模块组成
>>> #图片消噪

下面介绍一些具体的应用

1:求圆周率

从图片易知道,圆周率为半径为一的半圆的面积的两倍,所以只需要求解半圆的面积即可,可通过积分的形式求解

具体过程如下

>>>x=np.linspace(-1,1,1000)#-1到1分成1000份来进行积分

>>> f=lambda x:(1-x**2)**0.5

>>>plt.plot(x,f(x))#画出该图形

>>> plt.figure(figsize=(4,2))#设置图形大小

>>> plt.show()

>>> #使用scipy.integrate进行积分,调用quad()方法
>>> import scipy.integrate as integrate
>>> integrate.quad (f,-1,1)#求积分
(1.5707963267948983, 1.0002354500215915e-09, 1.5707963267948983, 1.0002354500215915e-09)

>>> sq,err=integrate.quad (f,-1,1)#sq是半圆的面积,err是误差
>>> pi=sq*2#圆的面积是圆周率
>>> pi

3.1415926535897967

2:文件处理

>>> #Scipy文件输入输出
>>> #随机生成数组,使用Scipy中的io.savement()保存
>>> #文件格式是.mat,标准的二进制文件
>>> import scipy.io as spio
>>> nd=np.random.randint(0,150,size=10)
>>> spio.savemat('nd',{'data':nd})#保存文件,文件名为nd
>>> spio.loadmat('nd')['data']#读取文件
array([[ 92, 67, 50, 145, 81, 101, 144, 101, 92, 106]])
>>> #读取scipy中的misc.imread()/imsave()
>>> import scipy.misc as misc
>>> cat_data=misc.imread ('C:/a/a.jpg')#对图片进行操作
>>> misc.imshow(cat_data)

>>> misc.imshow(misc.imrotate(cat_data,angle=90))#旋转90度

>>> a=misc.imresize(cat_data,size=0.5)
>>> misc.imshow(a)#缩小一倍

>>> q=misc.imfilter(cat_data,'blur')#给图片添加一种模糊效果,smooth是平滑效果,当然还有许多其他的效果
>>> misc.show(q)

>>> misc.imshow(q)

3:操作图片

>>> #使用scipy.misc.face(gray=True)获取图片,使用ndimage移动坐标,旋转图片,切割图片缩放图片

>>> import numpy as np

>>> import scipy.misc as misc

>>> import scipy.ndimage as ndimage

>>> face=misc.face(gray=True)#图片设置为黑白色了

>>> misc.imshow(face)

>>> import matplotlib.pyplot as plt

>>> ndimage.shift(face,[200,0])#图片向下移动200个单位

array([[  0,   0,   0, ...,   0,   0,   0],

[  0,   0,   0, ...,   0,   0,   0],

[  0,   0,   0, ...,   0,   0,   0],

...,

[203, 207, 210, ..., 102, 100, 100],

[205, 208, 210, ..., 111, 109, 108],

[206, 210, 211, ..., 119, 117, 116]], dtype=uint8)

>>> ss=ndimage.shift(face,[200,0])#图片向下移动200个单位

>>> plt.imshow(ss)

<matplotlib.image.AxesImage object at 0x00000000110F8A58>

>>> plt.show()

>>> ss1=ndimage.shift(face,[350,0],mode='mirror')#图片向下移动350个单位,并产生镜像效果

>>> plt.imshow(ss)

<matplotlib.image.AxesImage object at 0x000000001161C9B0>

>>> plt.show()

>>> plt.imshow(ss1)

<matplotlib.image.AxesImage object at 0x000000001180EFD0>

>>> plt.show()

>>> #mode 还可以指定为near和wrap等

>>> r=ndimage.rotate(face,angle=180,axes=(0,1))

>>> plt.imshow(r)

<matplotlib.image.AxesImage object at 0x000000001D7A3470>

>>> plt.show()

>>> #旋转

>>> #下面是缩放

>>> z=ndimage.zoom(face,zoom=0.5)

>>> plt.imshow(z)

<matplotlib.image.AxesImage object at 0x00000000117BE7B8>

>>> plt.show()

>>> #缩小一半

>>> face2=face[:512,-512:]

>>> plt.imshow(face2)

<matplotlib.image.AxesImage object at 0x000000001DA75B38>

>>> plt.show()

#

 根据坐标判断缩小

>>> face_g =ndimage.gaussian_filter(face,sigma=1)

>>> plt.imshow(face_g)

<matplotlib.image.AxesImage object at 0x0000000010D15DA0>

>>> plt.show()

>>> #高斯滤波可以使图片变得清晰些

>>> plt_m=ndimage.median_filter(face,size=2)

>>> plt.imshow(plt_m)

<matplotlib.image.AxesImage object at 0x000000001E2E58D0>

>>> plt.show()

>>> #中值滤波可以使图片变得清晰些

>>> #signal维纳滤波,滤镜尺寸的标量

>>> import scipy.signal  as signal

>>> sw=signal.wiener(face,mysize=10)

>>> plt.imshow(sw)

<matplotlib.image.AxesImage object at 0x000000001DC1D278>

>>> plt.show()

Scipy的应用的更多相关文章

  1. python安装numpy、scipy和matplotlib等whl包的方法

    最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...

  2. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  3. python scipy学习-曲线拟合

    根据某地每月的平均温度[17, 19, 21, 28, 33, 38, 37, 37, 31, 23, 19, 18]拟合温度函数. import numpy as np import matplot ...

  4. [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决

    这篇文章主要讲述Python如何安装Numpy.Scipy.Matlotlib.Scikit-learn等库的过程及遇到的问题解决方法.最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所 ...

  5. windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

  6. Scipy - Python library - Math tool - Begin

    Introduction Scientific Computing Tools for Python. Seen in Scipy.org. Environment Linux, CentOS 7 w ...

  7. Ubuntu下安装Numpy, SciPy and Matplotlib

    Python开发环境包含科学计算,需要安装NumPy, SciPy, Matplotlib.其中Matplotlib依赖于Python和NumPy.我们先安装NumPY和SciPy.  Matplot ...

  8. scipy科学计算库

    特定函数 例贝塞尔函数: 积分 quad,dblquad,tplquad对应单重积分,双重积分,三重积分 from scipy.integrate import quad,dblquad,tplqua ...

  9. Python导入Scipy子模块时出错

    导入Scipy子模块时报错,出现的问题都是提示 61 from numpy._distributor_init import NUMPY_MKL  # requires numpy+mklNo mod ...

  10. Scipy学习笔记 矩阵计算

    Scipy学习笔记 非本人原创  原链接 http://blog.sina.com.cn/s/blog_70586e000100moen.html 1.逆矩阵的求解 >>>impor ...

随机推荐

  1. 【题解】P2279消防局的设立

    [题解][P2279 HNOI2003]消防局的设立 又是一道贪心. 随便指定一个点为根,可以知道在覆盖了一个节点的子树的情况下,消防站越高越好.那么我们就贪心吧.\(trick\)是按深度\(pus ...

  2. Versions 崩溃(Mac升级OS X Yonsemite 10.10)

    今天兴冲冲的升级到了OS X Yonsemite 10.10,结果发现SVN工具不能用了,于是找到一个暂时的解决的方法 1.打开目录~/.subversion/servers 2.在[global] ...

  3. (转)php 根据url自动生成缩略图并处理高并发问题

    分享是一种精神,与技术高低无关!   图片缩略图动态生成- [代码编程] 2011-08-23 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.c ...

  4. debian7 amd64版本添加对x86包的支持

    dpkg --add-architecture i386apt-get updateapt-get install ia32-libs ia32-libs-gtk

  5. MSSQL2005外网IP的1433端口开启方法

    打开SQL Server Configuration Manager,在SQL server配置管理器展开SQL server 2005网络配置-->SQLEXPRESS 的协议-->双击 ...

  6. Spring Boot2.0之 原理—创建内置Tomcat容器

    前面所述的https://www.cnblogs.com/toov5/p/9823728.html 中的第一条先不赘述了,就是玩了maven 重点介绍后两条 首先内置Tomcat: SpringBoo ...

  7. consider increasing the maximum size of the cache.

    虚拟机上搭建jenkins,出现unable to free [10] percent of the cache for Context [/jenkins] 提示让我加大缓存 consider in ...

  8. 安装NXNET

    cran <- getOption("repos") cran["dmlc"] <- "https://s3-us-west-2.amaz ...

  9. Unity-2017.2官方实例教程Roll-a-ball(二)

    声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/97b630a23234 上一节Unity-2017.2官方实例教程Roll ...

  10. zero to one (3)

    工具使用 AWVS Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞. 功能及特 ...