python统计RGB图片某像素的个数案例
作者:概率问题 发布时间:2021-09-30 11:25:56
标签: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()
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/qq_33768643/article/details/105724834


猜你喜欢
- 前言:列表元素能增加就可以删除,这篇文章介绍几种增加元素的方法,虽然都是增加但是也有所不同,这里介绍的删除列表元素的方法也是一样,下面就来演
- import httplibimport osimport timedef check_http(i):
- 1、要点击链接,然后点击里面的上传tab,不熟悉的人可能找不到这个上传功能 2、插入的就是1个链接,我希望插入链接的同时插入1个图片代表文件
- @Test public void test33() {
- 最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将操作系统
- 1.概述pyecharts 是百度开源的,适用于数据可视化的工具,配置灵活,展示图表相对美观,顺滑。2.安装python3环境下的安装:pi
- 在已有的shapefile文件的基础上增加字段: # -*- coding:gb2312 -*-import shapefiler=shap
- asp日期转换星座函数,参数是日期型function astro(birth)astro=""if
- 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审
- 前言哈喽铁汁们~新年到了,很多小伙伴都会买上一本日历。现在各种主题各种式样的日历有很多,不过你有没有想过自己定制一套专属的个性化电子日历呢?
- 代码如下: <!-- #include file="../conn.asp" --> <!-- #in
- paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Lin
- 1.设置mysql允许外部连接访问(授权):grant all privileges on *.* to root@'%'
- 例如,如果列a被定义为unique,并且值为1,则下列语句有同样的效果,也就是说一旦出入的记录中存在a=1的情况,直接更新c = c + 1
- mysql_result定义和用法mysql_result() 函数返回结果集中一个字段的值。mysql_result() 返回 MySQL
- 本文实例讲述了微信小程序开发之animation循环动画实现的让云朵飘效果。分享给大家供大家参考,具体如下:微信小程序提供了实现动画的api
- 前言d3.js 是一款上手容易的js类库,专门用于绘制svg图形图表,其关键理念为data-join 意即数据绑定.搞清这个概念非常重要,它
- Win10系统安装MySQL8.0遇到的问题及解决方法,具体内容如下所示:对着第一个桌面应用击右键,选择“以管理员身份运行”选项,就可以以管
- ES6添加了Promise对象,成功时在then中处理,失败则在catch中处理,但有时候,我们需要在无论成功或失败时都要做一些事,比如隐藏
- 一、定义正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符