scipy图片处理

导入库

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
# 图像处理库
import matplotlib.pyplot as plt
%matplotlib inline
# scipy.fftpack模块用来计算快速傅里叶变换
# 速度比传统傅里叶变换更快,是对之前算法的改进
# 图片是二维数据,注意使用fftpack的二维转变方法
from scipy.fftpack import fft2,ifft2
# 积分库
from scipy.integrate import quad

图片消噪

示例,登月图片消噪

moon = plt.imread('moonlanding.png')# 灰度化处理的图片
plt.imshow(moon,cmap='gray')# 时域-频域
fft_data = fft2(moon)# 滤波,把高频波滤掉
# > 后边的值需要自己调节
condition = np.abs(fft_data) > 2e3
fft_data[np.where(condition)] = 0# 频域--时域
ifft_data = ifft2(fft_data)plt.imshow(np.real(ifft_data),cmap='gray')# jpg图像  0-255之间的整数
# png图像  0-1之间的小数

灰度处理

# 读取图片
pujing = plt.imread('pujing.jpg')
# 查看维度
pujing.shape
>>> (354, 500, 3)
# 去除色彩
pujing.mean(axis=2).shape
>>> (354, 500)
# 灰度处理
plt.imshow(pujing.mean(axis=2),cmap='gray')

数值积分,求解圆周率

integrate 对函数(1 - x^2)^0.5进行积分

f = lambda x:(1-x**2)**0.5
# 绘制区间
x = np.linspace(-1,1,100)
y = f(x)
plt.figure(figsize=(4,4))
plt.plot(x,y)
plt.plot(x,-y)

使用scipy.integrate进行积分,调用quad()方法

# 返回值第一个是面积,第二个是误差
area,err = quad(f,-1,1)
# area*2是整圆的面积
p = area*2/1**2
print(p)
>>> 3.1415926535897967

scipy文件输入/输出

随机生成数组,使用scipy中的io.savemat()保存 文件格式是.mat,标准的二进制文件

n = np.random.randint(0,100,size=10)
>>> array([28, 90, 21, 45, 75, 42, 76, 58,  1, 49])
# 导入io库
import scipy.io as io
# 存储二进制  文件路径默认是.mat,可以省略
# mdict用于传递要写入本地的数据,字典的键自由定制
io.savemat('dancer',mdict={'data':n})
# 使用io.loadmat()读取数据
io.loadmat('dancer.mat')['data']
>>> array([[28, 90, 21, 45, 75, 42, 76, 58,  1, 49]])
# 读写图片使用scipy中misc.imread()/imsave()
# 旧版读取
import scipy.misc as misc
misc.imread('pujing.jpg')
# 读取
import imageio as imgio
pujing = imgio.imread('pujing.jpg')
# 存储
pjgray = np.uint8(pujing.mean(axis=2))
imgio.imsave('gray_pujing.jpg',pjgray)

misc的rotate、resize、imfilter操作

# 旋转90度
plt.imshow(misc.imrotate(pujing,angle = 90))
import skimage.transform as transform
import imageio as misc
pujing = misc.imread('pujing.jpg')
transform.rotate(pujing,angle=90)
# output_shape 指定元组,会对图片进行变形压缩
# mode参数的默认值conctant需要修改,因为即将被remove
# 该拜年大小
plt.imshow(transform.resize(pujing,output_shape=(100,100),mode='symmetric'))
# 'blur', 'contour', 'detail', 'edge_enhance', 'edge_enhance_more',
# 'emboss', 'find_edges', 'smooth', 'smooth_more', 'sharpen'
# 类似于滤镜
plt.imshow(misc.imfilter(pujing,'emboss'))

scipy.ndimage图片处理

import scipy.ndimage as ndimage
# misc库自带的一张图片,可以快速读取一张小浣熊
img = misc.face(gray=True)

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

shift移动坐标

# constant', 'nearest', 'reflect', 'mirror' ,'wrap'
plt.imshow(ndimage.shift(img,shift=[100,200],mode='wrap'),cmap='gray')
  • rotate旋转图片

  • zoom缩放图片

  • 使用切片切割图片

  • 图片进行过滤

  • 添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理

    使图片变清楚

  • 加载图片,使用灰色图片misc.face()添加噪声

  • gaussian高斯滤波参数sigma:高斯核的标准偏差

  • median中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入

  • signal维纳滤波参数mysize:滤镜尺寸的标量

pandas中的绘图函数

线形图

导入库

# 三剑客
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
# 图像处理函数
import matplotlib.pyplot as plt
%matplotlib inline

示例

# 连续100天内,某一支股票价格的变化,可以采用线型图来表示
s1 = Series(data=np.random.randint(0,10,size=100))
s1.plot()

# 绘制多条股票变化趋势
# 在同一个cell中,绘制多个对象的图
s2 = Series(data=np.random.randint(0,100,size=100))
s2.cumsum().plot()
s1.cumsum().plot()

  • 图例的位置可能会随着数据的不同而不同

柱状图

Series柱状图示例,kind = 'bar'/'barh'

s1 = Series(data=[100,80,99,80,78,76,22,90,100],index=list('123456789'))
s1.plot(kind='bar')

DataFrame柱状图示例,

df1 = DataFrame(data=np.random.randint(50,100,size=(9,3)),columns=list('ABC'),index=list('123456789'))
df1.plot(kind='bar')

# 改变方向
df1.plot(kind="barh")

直方图

series示例,kind='hist'

s1 = Series(data=np.array([1,1,4,1,3,5,8,8,5,5]))
s1.plot(kind='hist',bins=10)
# 不同的bins,会导致直方图显示的不一样

rondom生成随机数百分比直方图,调用hist方法

  • 柱高表示数据的频数,柱宽表示各组数据的组距
  • 参数bins可以设置直方图方柱的个数上限,越大柱宽越小,数据分组越细致
  • 设置normed参数为True,可以把频数转换为概率

kde图:核密度估计,用于弥补直方图由于参数bins设置的不合理导致的精度缺失问题

s1.plot(kind='hist',bins=3,normed=True)
s1.plot(kind='kde')

示例: 绘制一个由两个不同的标准正态分布组成的双峰分布

n1 = np.random.normal(loc=50,scale=1,size=100)
n2 = np.random.normal(loc=70,scale=3,size=50)s = Series(data=np.concatenate((n1,n2)))
s.plot(kind='hist',normed=True,bins=30)
s.plot(kind='kde')

散点图

散布图 散布图是观察两个一维数据数列之间的关系的有效方法,DataFrame对象可用

使用方法: 设置kind = ‘scatter’,给明标签columns

散布图矩阵,当有多个点时,两两点的关系

使用函数:pd.plotting.scatter_matrix(),

  • 参数diagnol:设置对角线的图像类型
x = Series(data=[1,3,5,7,9])
y = Series(data=[2,4,6,8,10])df = DataFrame(data = np.random.randint(0,10,size=(5,2)),columns=['A','B'])
df.A = x
df.B = y
df.plot(kind='scatter',x='A',y='B')

df2 = DataFrame(data=np.random.randn(10000,4),columns=list('ABCD'))
# DataFrme多列对应关系
# diagonal='kde' 设置对角线的图形显示模式
r = pd.plotting.scatter_matrix(df2,diagonal='kde')

jupyter入门之图像处理相关推荐

  1. 计算机视觉入门之图像处理<六>:图像锐化处理

    往期文章回顾: 计算机视觉入门之<零> 计算机视觉入门之图像处理<一>:图像处理基础概念 计算机视觉入门之图像处理<二>:图像处理基础概念 计算机视觉入门之图像处理 ...

  2. jupyter入门之Matplotlib

    jupyter入门之Matplotlib 一. Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis 水平和垂直的轴线 轴标签 axisLabel 水平和垂直 ...

  3. JC-6、OpenCV+Tensorflow入门人工智能图像处理

    目录 Beginner 1. Anaconda下载与环境搭建 2. 计算机视觉入门 hello world 2.1. OpenCV基础操作 2.1.1. 图片的读取与展示 2.1.2. OpenCV中 ...

  4. 图像入门——3. 图像处理的视觉基础与应用

    图像的颜色模型 颜色是视觉系统对可见光的感知结果.可见光是波长在380nm-780nm之间的电磁波. 我们看到的大多数光不是一种波长的光,而是由许多不同波长的光组合成的.人的视网膜有对红.绿.蓝颜色敏 ...

  5. PyQt5高速入门(图像处理界面),期末作业好帮手(上)

    本教程仅适用于PyQt5零基础入门选手应付作业使用,不包含任何原理及扩展,核心为糊弄学大师的养成.下面将基于一个图像处理案例,讲述如何高速入门PyQt5. 工具准备 需要下载: 1. ​​​​​Pyt ...

  6. 3- OpenCV+TensorFlow 入门人工智能图像处理-TensorFlow入门

    tensorflow基础入门 思考一个问题: 如何刚好学习TensorFlow 类比为一门开发语言,学会语法,api的调用, 原理性掌握. 语言的要素: 基础数据类型 运算符 流程 字典 数组 imp ...

  7. Java美颜相机入门(图像处理实现各种滤镜算法)

    一.思路分析 一款简易美颜相机的功能我们可以简单分为两大块:1.图像处理    2.功能区 最终的效果图如下: 二.代码分析 图像处理工具的本质是处理像素点,而像素点的本质就是一种颜色,每一个像素点都 ...

  8. 一篇入门数字图像处理

    数字图像处理 图像处理基础 概述 什么是图像 通过成像系统拍摄,数字化之后二维数组就是一个图像 如何访问图像 图像有单通道和多通道(比如rgb)之分,访问时只需要以多维数组的形式访问即可 图像仿射变换 ...

  9. python用opencv实现图片的美白磨皮_12 - OpenCV+TensorFlow 入门人工智能图像处理-磨皮美白-多智时代...

    磨皮美白 上节课的+固定值,我们还可以变为乘以一个系数. foriinrange(0,height):forjinrange(0,width): (b,g,r)=img[i,j] bb=int(b*1 ...

最新文章

  1. 命令行批量截图Node脚本
  2. oracle传date参数十二小时,Oracle数据库中 to_date()与24小时制表示法及mm分钟的显示...
  3. 如何用Pygame写游戏(五)
  4. 对硬盘做镜像,按位与按文件有什么区别?
  5. 决策树之分类树快速理解
  6. 利用Auto Deploy 部署ESXi 5
  7. 搭建NodeJS环境
  8. bzoj 1650: [Usaco2006 Dec]River Hopscotch 跳石子(二分)
  9. response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路
  10. 第一章:x264视频制作meGUI工具下载
  11. 阿里mPaaS闪退埋点字段含义
  12. 程矢Axure夜话:Axure手机原型视频教程之图形解锁
  13. DOtween 教程
  14. ubuntu18下查看opencv版本、多版本之间的共存,切换、下载地址
  15. matlab修改证件照背景颜色
  16. 不知如何选股?不知哪种指标策略可靠?量化分析比较DMA、DMI、MACD、KDJ、BOLL指标策略收益情况
  17. 一步一步学网络爬虫(从python到scrapy)
  18. python中的保存文件,自用
  19. HP C7000刀片服务器学习一
  20. procreate笔刷ipad绘画软件教程字体 色卡 素材水彩 人物油画下载

热门文章

  1. tkinter库Button组件
  2. 好久没有好好学习天天向上了,慢慢开始重拾学习的心情了
  3. 免费ZIP文件解压缩工具
  4. Android面试:一个三非渣本的Android校招秋招之路,附答案
  5. onBlur事件与onfocus事件 (js)
  6. 照片内容怎么转换Excel?这些小技巧知道吗
  7. C语言实现统计字符串中中文汉字个数(针对汉字占三个字节有效)
  8. 金额转换(数字转换中文老写)
  9. 怎么办理按揭买房?按揭买房需要哪些手续和资料?
  10. ipv6qqqqqqqqqqqqqqq网址检测