Scipy的应用
首先总体概括一下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的应用的更多相关文章
- python安装numpy、scipy和matplotlib等whl包的方法
最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
- python scipy学习-曲线拟合
根据某地每月的平均温度[17, 19, 21, 28, 33, 38, 37, 37, 31, 23, 19, 18]拟合温度函数. import numpy as np import matplot ...
- [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决
这篇文章主要讲述Python如何安装Numpy.Scipy.Matlotlib.Scikit-learn等库的过程及遇到的问题解决方法.最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所 ...
- windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...
- Scipy - Python library - Math tool - Begin
Introduction Scientific Computing Tools for Python. Seen in Scipy.org. Environment Linux, CentOS 7 w ...
- Ubuntu下安装Numpy, SciPy and Matplotlib
Python开发环境包含科学计算,需要安装NumPy, SciPy, Matplotlib.其中Matplotlib依赖于Python和NumPy.我们先安装NumPY和SciPy. Matplot ...
- scipy科学计算库
特定函数 例贝塞尔函数: 积分 quad,dblquad,tplquad对应单重积分,双重积分,三重积分 from scipy.integrate import quad,dblquad,tplqua ...
- Python导入Scipy子模块时出错
导入Scipy子模块时报错,出现的问题都是提示 61 from numpy._distributor_init import NUMPY_MKL # requires numpy+mklNo mod ...
- Scipy学习笔记 矩阵计算
Scipy学习笔记 非本人原创 原链接 http://blog.sina.com.cn/s/blog_70586e000100moen.html 1.逆矩阵的求解 >>>impor ...
随机推荐
- Eclipse中servlet显示无法导入javax.servlet包问题的解决方案
项目名-->右键 Property-->选择 JavaBuild Path-->选择 Add External JARs-->选择 把servlet-api.jar的路径输入即 ...
- linux下tar.xz结尾文件的解压方法
xz -d ***.tar.xz tar -xvf ***.tar 可以看到这个压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式.
- linux版本查看命令
uname -a显示电脑以及操作系统相关信息 cat /proc/version显示正在运行的内核版本 cat /etc/issue或cat /etc/redhat-release Linux查看版 ...
- 5.2 《锋利的jQuery》jQuery对表格的操作(选项卡/换肤)
表格隔行变色以及单选/复选 表格展开关闭 表格筛选 字体变大/缩小 选项卡 网页换肤 tip1: $("tr:odd")和$("tr:even")选择器索引是从 ...
- CentOS已经安装命令,但提示找不到
今天在虚机上装了个CENTOS.装好后,好多命令都提示找不到,如tcpdump.arp.ifconfig.查看安装包,都已经安装过. ------------无敌分割线------------- # ...
- 【LeetCode】种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...
- python_opencv库的学习
一.以灰度图的形式加载彩色图像. https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_ ...
- html5--1.19 通用属性
html5--1.19 通用属性 学习要点: 1.通用属性的概念及几个常用的通用属性2.对属性值的若干点补充 通用属性 通用属性(全局属性)可以用于任何的HTML5元素:通用属性有十几种:这节课不会全 ...
- html5--1.18 div元素与布局
1.18 div元素与布局 1.元素的分类2.div元素与布局 1.元素的分类 块元素:主要特征是会产生换行效果,自动与其他元素分离成两行:通常可以作为容器在内部添加其他元素. 已经学过的块元素有: ...
- 分享知识-快乐自己:SpringBoot结合使用拦截器(判断是否用户是否已登陆)
所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样. 基础拦截器操作: ...