python统计RGB图片某像素的个数案例

 更新时间:2021年03月17日 09:39:25   作者:概率问题  
这篇文章主要介绍了python统计RGB图片某像素的个数案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.对于RGB三通道图片,直接用两层for循环的话,效率比较低

2.可以先将RGB图片转为灰度图片,再利用numpy.where的广播机制统计像素个数。这里有一个前提是提前知道与灰度图片的像素值相对应RGB颜色。

代码如下:

from PIL import Image
import numpy as np
import cv2

img_L = np.array(Image.open('test.png').convert("L"))
img_RGB = np.array(Image.open('test.png').convert("RGB"))

# temp = {}
# for i in range(img_L.shape[0]):
#   for j in range(img_L.shape[1]):
#     if not temp.get(int(img_L[i][j])):
#       temp[int(img_L[i][j])] = list(img_RGB[i][j])
# print(temp)

#这里得到灰度像素值0对应(0,0,0),62对应(19,69,139)
color_0_0_0 = np.where(img_L == 0)[0].shape[0]
color_19_69_139 = np.where(img_L == 62)[0].shape[0]

pixel_sum = img_L.shape[0] * img_L.shape[1]

print("0_0_0 像素个数:{} 占比:%{}".format(color_0_0_0,color_0_0_0/pixel_sum*100))
print("19_69_139 像素个数:{} 占比:%{}".format(color_19_69_139,color_19_69_139/pixel_sum*100))

补充:OpenCV---如何统计图像的像素分布值个数(6)

代码如下:

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
def statistics():
  src = cv.imread("D:/matplotlib/0.jpg")
  cv.imshow("q",src)
  h,w,ch = np.shape(src)
  gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
  cv.imshow("gray",gray)
  hest = np.zeros([256],dtype = np.int32)
  for row in range(h):
    for col in range(w):
      pv = gray[row,col]
      hest[pv] +=1
  plt.plot(hest,color = "r")
  plt.xlim([0,256])
  plt.show()
  cv.waitKey(0)
  cv.destroyAllWindows()
statistics()

运行效果:

像素分布统计图

代码解释:

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
def statistics():
  src = cv.imread("D:/matplotlib/0.jpg")
  cv.imshow("q",src)
  h,w,ch = np.shape(src)
  #读取图像属性
  gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
  #将图像转换成灰度图,
  cv.imshow("gray",gray)
  hest = np.zeros([256],dtype = np.int32)
  #建立空白数组
  for row in range(h):
    for col in range(w):
      pv = gray[row,col]
      hest[pv] +=1
      #统计不同像素值出现的频率
  plt.plot(hest,color = "r")
  plt.xlim([0,256])
  plt.show()
  #画出统计图
  cv.waitKey(0)
  cv.destroyAllWindows()
statistics()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 解决使用pandas聚类时的小坑

    解决使用pandas聚类时的小坑

    这篇文章主要介绍了解决使用pandas聚类时的小坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 关于Python使用logging库进行有效日志管理的方法详解

    关于Python使用logging库进行有效日志管理的方法详解

    在开发大型软件或处理复杂问题时,我们经常需要一种方法来记录和跟踪程序的运行状态,Python 提供了一个名为 logging 的标准库,可以帮助我们更好地完成这项任务,在这篇文章中,我们将介绍如何使用 Python 的 logging 库进行日志记录
    2023-06-06
  • 安装PyTorch的详细过程记录

    安装PyTorch的详细过程记录

    PyTorch是一个基于Python的科学计算框架,用于进行深度学习相关研究,下面这篇文章主要给大家介绍了关于安装PyTorch的详细过程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • django站点管理详解

    django站点管理详解

    这篇文章主要介绍了django站点管理详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python logging模块进行封装实现原理解析

    Python logging模块进行封装实现原理解析

    这篇文章主要介绍了Python logging模块进行封装实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python保存两位小数的多种方法汇总

    python保存两位小数的多种方法汇总

    很多小伙伴在学习python的时候可能会遇到对数据进行格式化输出的需求,其中最常见的需求为:保留几位小数,下面这篇文章主要给大家介绍了关于python保存两位小数的多种方法,需要的朋友可以参考下
    2021-12-12
  • 简单了解为什么python函数后有多个括号

    简单了解为什么python函数后有多个括号

    这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Pandas使用query()优雅的查询实例

    Pandas使用query()优雅的查询实例

    本文主要介绍了Pandas使用query()优雅的查询实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 使用Python代码识别股票价格图表模式实现

    使用Python代码识别股票价格图表模式实现

    这篇文章主要为大家介绍了使用Python代码识别股票价格图表模式的实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python中BeautifulSoup通过查找Id获取元素信息

    Python中BeautifulSoup通过查找Id获取元素信息

    这篇文章主要介绍了Python中BeautifulSoup通过查找Id获取元素信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论