文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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()

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯