python+matplotlib对柿子图的彩色和灰色直方图统计

  • 前言
  • 代码
  • 有疑待查
  • 参考链接

前言

最近在对柿子图统计时,遇到了np.histogram函数的参数bins的用法不理解,查找了大量资料后,有了初步理解,因此记录下来。

代码

#coding:utf8
import cv2
import matplotlib.pyplot as plt
import numpy as np
import sys
import osfilename = 'E:\Study\preview.jpg' #柿子色彩图
##-------------色彩直方图-----------##
img = cv2.imread(filename)
colors=['blue','green','red']for i in range(3):hist,x=np.histogram(img[:,:,i].ravel(),bins=256,range=(0,256))#img[:,:,i]是表示单个通道的集合.单个通道的集合是一行一行的,因此是二维数组,在这里使用raval方法切换为一维#bins是实际上对应的就是X轴的坐标,你需要统计对某个元素进行数量统计的集合,传入256时表示从将rang(0-256)分成bins(即256等份,这样间距刚好为1)份的每一个正整数都进行数量统计#当bins传入指定数组时比如[0,1,3,4]则只会对这四个数进行统计#rang是限制bins的上下限数值,超出range范围的bins无效,比如当range=(0,200)时,bins=[80,100,244]中的255是无效的#返回值hist是每一个元素重复出现次数的合集#返回值X由bins决定,比如bins=256,则x就是0-256的所有整数和0的合集,如果bins传入[0,1,2,4],那么x就只是[0,1,2,4]4个元素# print(hist)#print(x)# print(x[:-1])# print(x[1:])plt.plot(0.5*(x[:-1]+x[1:]),hist,label=colors[i],color=colors[i])#第一,第二个参数是x,y轴数值,后面的是风格,label是标签说明,color是图画颜色#自己使用时发现必须使用legend方法才能显示文字标签 plt.legend()
plt.show()
#------------------------------------------------------------#
#灰度图片直方图统计imgGrey=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#直接拔柿子图转为灰度图片
colors=['grey']
print(imgGrey.shape)
for i in range(1):hist,x= np.histogram(imgGrey[:,:].ravel(),bins=256,range=(0,256))plt.plot(x[:-1],hist,label=colors[i],color=colors[i])plt.legend()
plt.show()

有疑待查

1.查找资料时,发现作者在plt.plot中使用的是0.5*(x[:-1]+x[1:])来确定X轴的范围,但我实际中发现x作为需要统计元素的集合,为何不直接使用x[:-1]作为X轴?所以在彩色图和灰度图中,我用了两种不同的方法生成X轴坐标

参考链接

https://blog.csdn.net/qq_37791134/article/details/104109378

python+matplotlib对柿子图的彩色和灰色直方图统计相关推荐

  1. Python matplotlib绘制雷达图

    Python matplotlib绘制雷达图 本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指 ...

  2. python制作雷达图_如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一. ...

  3. 不愧是摸鱼高手Python matplotlib 绘制频谱图都会,能怪老板不管

    复习回顾 matplotlib 是Python专门用来绘制渲染的模块,其底层主要分为脚本层.美工层和后端.脚本层为我们提供常见图形绘制如折线.柱状.直方.饼图.以往文章 这么详细的Python mat ...

  4. 超详细的Python matplotlib 绘制动态图

    复习回顾 在matplotlib模块中我们前面学习绘制如折线.柱状.散点.直方图等静态图形.我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后 ...

  5. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  6. Python matplotlib 绘制三维图并修改样式

    问题描述 通过Python matplotlib绘制三维函数图,函数内容如下: 为了简化表达,对测试函数的维度做降维表达,从100维降到2维,这样就可以通过三维函数来表达了.样式上需要满足以下要求: ...

  7. 科学数据库Python——matplotlib画折线图

    matplotlib绘制折线图基础操作 matplotlib基础绘图 设置图片大小 保存到本地 调整x或者y轴刻度的间距 解决matplotlib的中文乱码问题 标题.x轴和y轴的描述信息 线条的样式 ...

  8. python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...

    今天想直观的展示一下数据就用到了matplotlib模块,之前都是一张图只有一条曲线,现在想同一个图片上绘制多条曲线来对比,实现很简单,具体如下: #!usr/bin/env python #enco ...

  9. Python+matplotlib使用雷达图技术绘制五角星

    雷达图是一种常用的数据可视化与展示技术,可以把多个维度的信息在同一个图上展示出来,使得各项指标一目了然.本文代码通过绘制五角星演示了polar()函数的用法. 参考代码: 运行效果: -------- ...

最新文章

  1. 做接口测试最重要的知识点
  2. android gradle is插件,android gradle 插件创建 configuration
  3. MyBatis关键配置-接口注入使用
  4. Linux命令常用大全
  5. python 函数、面向对象
  6. Android 蓝牙4.0在实际开发中的运用
  7. 【剑指offer】面试题39:数组中出现次数超过一半的数字
  8. 经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
  9. 按键精灵bmp图片怎么导出_发光字怎么制作,招牌LED发光字工艺
  10. Windows 10 S 已死,S 模式长存!
  11. 如何将在立创商场下载的PCB导入工程
  12. 购物网站的商品推荐算法有哪些?
  13. flutter如何让行Row的两个子控件分别左对齐和右对齐?
  14. LAMMPS模拟in和data文件集合
  15. 淘客怎么利用抖音评论引流?
  16. 字符串操作——substr用法
  17. 什么是UrlRewrite?
  18. 大牛deep learning集合
  19. ES6 Generator函数
  20. 【BIM入门实战】Revit安装失败的常见问题及解决办法汇总

热门文章

  1. 王 第潜艇三天 引用类型 继承
  2. zabbix报错gd、freetype、png、jpeg
  3. 教妹学Java(十四):switch 语句详解
  4. CCF关于举办CSP-J1 CSP-S1 初赛的报名通知
  5. 2.9 zio入门——递归和ZIO
  6. 射频day7:微带线;带状线
  7. 关注奢交所兄弟品牌佰家当 17年积累撬动万亿民资市场
  8. 云服务器php上传文件大小,php 上传远程服务器文件大小
  9. 中兴力维动环监控_高新兴FSU中兴力维FSU艾默生FSU收购
  10. springboot自定义启动图标