我们先来看两个函数reshape和flatten:

假设我们先生成一个一维数组:

vec=np.arange(15)

print vec

显示为:

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]

如果我们要把这个一维数组,变成一个3*5二维矩阵,我们可以使用reshape来实现

mat= vec.reshape(3,5)

print mat

显示为

[[ 0 1 2 3 4]

[ 5 6 7 8 9]

[10 11 12 13 14]]

现在如果我们返过来,知道一个二维矩阵,要变成一个一维数组,就不能用reshape了,只能用flatten. 我们来看两者的区别

a1=mat.reshape(1,-1) #-1表示为任意,让系统自动计算

print a1

a2=mat.flatten()

print a2

显示为:

a1: [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]]

a2: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]

可以看出,用reshape进行变换,实际上变换后还是二维数组,两个方括号,因此只能用flatten.

我们要对图像求直方图,就需要先把图像矩阵进行flatten操作,使之变为一维数组,然后再进行统计。

一、画灰度图直方图

绘图都可以调用matplotlib.pyplot库来进行,其中的hist函数可以直接绘制直方图。

调用方式:

n, bins, patches = plt.hist(arr, bins=50, normed=1, facecolor='green', alpha=0.75)

hist的参数非常多,但常用的就这五个,只有第一个是必须的,后面四个可选

arr: 需要计算直方图的一维数组

bins: 直方图的柱数,可选项,默认为10

normed: 是否将得到的直方图向量归一化。默认为0

facecolor: 直方图颜色

alpha: 透明度

返回值 :

n: 直方图向量,是否归一化由参数设定

bins: 返回各个bin的区间范围

patches: 返回每个bin里面包含的数据,是一个list

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

img=np.array(Image.open('d:/pic/lena.jpg').convert('L'))

plt.figure("lena")

arr=img.flatten()

n, bins, patches = plt.hist(arr, bins=256, normed=1, facecolor='green', alpha=0.75)

plt.show()

二、彩色图片直方图

实际上是和灰度直方图一样的,只是分别画出三通道的直方图,然后叠加在一起。

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

src=Image.open('d:/ex.jpg')

r,g,b=src.split()

plt.figure("lena")

ar=np.array(r).flatten()

plt.hist(ar, bins=256, normed=1,facecolor='r',edgecolor='r',hold=1)

ag=np.array(g).flatten()

plt.hist(ag, bins=256, normed=1, facecolor='g',edgecolor='g',hold=1)

ab=np.array(b).flatten()

plt.hist(ab, bins=256, normed=1, facecolor='b',edgecolor='b')

plt.show()

由此可见,matplotlib的画图功能是非常强大的,直方图只是其中非常小的一部分,更多的请参看官方文档:

http://matplotlib.org/api/pyplot_summary.html

用python简单处理图片(4):图像中的像素访问

前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都 ...

用python简单处理图片(1):打开\显示\保存图像

一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

用python简单处理图片(2):图像通道\几何变换\裁剪

一.图像通道 1.彩色图像转灰度图 from PIL import Image import matplotlib.pyplot as plt img=Image.open('d:/ex.jpg') ...

用python简单处理图片(3):添加水印

python版本:3.4 Pillow版本:3.0 一.添加文字水印 from PIL import Image, ImageDraw,ImageFont im = Image.open(" ...

Python 图像处理 OpenCV (16):图像直方图

前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

Python实现图像直方图均衡化算法

title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

Python+OpenCV图像处理(八)—— 图像直方图

直方图简介:图像的直方图是用来表现图像中亮度分布的直方图,给出的是图像中某个亮度或者某个范围亮度下共有几个像素.还不明白?就是统计一幅图某个亮度像素数量.比如对于灰度值12,一幅图里面有2000 个像 ...

opencv python:图像直方图 histogram

直接用matplotlib画出直方图 def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) # image.ravel()将图像展开 ...

OpenCV Python教程(3、直方图的计算与显示)

转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...

随机推荐

C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》

程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...

linux设备模型

device_driver和device必须依附总线.总线.驱动.设备最终会落实为sysfs中的一个目录.kobject对应sysfs的一个目录. attribute直接落实sysfs中的一个文件,如 ...

HTML 链接<a>标签

定义和用法 标签定义超链接,用于从一张页面链接到另一张页面. 元素最重要的属性是 href 属性,它指示链接的目标. 在所有浏览器中,链接的默认外观是: 未被访 ...

jenkins远程命令执行利用工具

昨天看小飞侠写的py的jenkins的脚本,昨天晚上在微信里评论今天写一个JAVA的GUI的tools. 早上花了点时间写一下: code: package com.tools; import jav ...

Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)

注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...

HDOJ--4786--Fibonacci Tree【生成树】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4786 题意:给出n个点,m条边,和边的信息. 边有两种颜色,白色和黑色.现要求构造一个生成树.看是否能满足 ...

HTML5比较实用的代码

增强IE兼容性

python画简便的图片-用python简单处理图片(5):图像直方图相关推荐

  1. 如何用python画金字塔形状_用Python画小猪佩奇,落叶树和动漫人物

    本文目录:小猪佩奇-落叶树-魔法少女 本文作者:小赖同学 ​ 最近在浏览Python文章时,无意中发现了一个好玩的画图工具turtle,看到各路大神竟然用Python画了一个图片出来,无法用言语来形容 ...

  2. python画画用哪个软件_如何用python画韦恩图? 使用python的tutul工具,画一朵雏菊花...

    使用python的tutul工具,画一朵雏菊花 如何用python画韦恩图?不管什么时候,给心留一点空间.人生一世,不用什么都要去争,不是什么都要去抢,欲望少一点,满足多一点,这样才会活得潇洒一点,人 ...

  3. 用python画好看的图片,第二天用python绘画一些简单图片

    python画笑脸程序源代码import turtle #画脸 t = turtle.Pen() t.speed(15) #t.circle(150) #t.color('orange') t.fil ...

  4. python画简便的图-最适合小白学的花色玩Python折线图|画个天气预报

    原标题:最适合小白学的花色玩Python折线图|画个天气预报 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...

  5. python画折线图代码-用Python画论文折线图、曲线图?几个代码模板轻松搞定!

    前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...

  6. 用python画一束满天星花朵,python满天星绘制流程图

    大家好,小编来为大家解答以下问题,用python画一束满天星花朵,python满天星绘制流程图,今天让我们一起来看看吧! 1.用python画一百个同心圆的代码? import matplotlib. ...

  7. 如何用python画出中国地图-用Python画一个中国地图

    你用 Java 的 4 行代码画一个地图出来?m.drawcountries(linewidth=1.5) 就变成了如许: 用 Java 可能吗?用 PHP 可能吗? 如不雅我们想显示中国地图,只须要 ...

  8. 如何用python画出中国地图-用Python画中国地图(二)

    在上一篇文章<用Python画一个中国地图>中,我们简单描述了一下如何用Python快速画出一个中国地图的轮廓,似乎没有什么实用价值,这一次我们用实际数据填充它,使它看上去更有意义. 上色 ...

  9. python画猪头_使用Python画小猪佩奇 社会人标配

    看了一些用python实现小猪佩奇画画的帖子,向自己实现下,以此记录. 社会人的标配是谁,当然是吹风机小猪佩奇身上纹. 我自己尝试画过小猪配齐但是感觉眼睛特别难画,画出来的猪头没有立体感,眼睛画不好整 ...

最新文章

  1. Python编程比较好的机构怎么选择
  2. PyTorch 实现经典模型7:YOLO (v1, v2, v3, v4)
  3. 如何给CSDN博客添加个人微信二维码或自定义栏目
  4. 相册选取图片和照相机取图片
  5. 多媒体实时交互系统主要由系统服务器,多媒体设备和多媒体交互系统专利_专利申请于2017-03-08_专利查询 - 天眼查...
  6. 使用“Apple 诊断”来测试您的Mac 是不是存在硬件问题
  7. 【原创】黑群晖向白群晖 DS920+ 迁移
  8. 学习-Java包装类之Double类(9)
  9. 中国人工智能(AI)发展历程、AI产业重点发展区域、重点发展城市及中国AI产业地区发展总结及展望
  10. python 修改文件名有特殊符号_Linux删除包含特殊符号文件名的文件
  11. 大数据笔记--scala(第一篇)
  12. 计算机多媒体设备维护维修,学校多媒体教学设备的故障检修
  13. SystemError: could not open configuration file `/etc/libuser.conf': 没有那个文件或目录
  14. 函数模板和类模板的使用
  15. NULL, '\0',0 '0'的区别
  16. matlab中除号的有效字符,乘号(x)、除号(÷)、双引号()等字符实体的HTML代码...
  17. Ext3文件系统介绍
  18. Shader 学习笔记:杂记
  19. 360 Total Security(360国际版)官方中文版V10.8.0.1269 | 360国际版和国内版区别很大-杀毒能力相当且非常纯净不流氓
  20. 【P3】 对称三相负载上的相电压、相电流与线电压、线电流的关系

热门文章

  1. [WinError 3] 系统找不到指定的路径。: ‘./flower_data/train‘ 问题解决
  2. 别只盯着LoRa、SigFox, LPWAN 连接技术还有这些!
  3. 一招,提高 Github 成员微信群运营效率
  4. 简单好听的id_简单好听的微信id(精选500个)_见过的最好看的微信id_简单好记好看的微信号 - 第4页...
  5. cocos2d-x android 直接加载下载到sd的zip里的资源文件(一)
  6. meo学习笔记3:并行与并发,线程与进程的区别
  7. NS3运行Reno,BBR,CUBIC等拥塞控制算法
  8. seo搜索引擎优化-SEO优化教程附关键词工具以及文章采集软件
  9. mysql数据库报错1146_数据库错误代码1146 - 本地与在线
  10. 《Miss Talk》第07期:对话拓课云联合创始人兼CTO 王晓伟