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()
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
您可能感兴趣的文章:- Python 统计数据集标签的类别及数目操作
- Python统计可散列的对象之容器Counter详解
- Python 统计列表中重复元素的个数并返回其索引值的实现方法
- Python实战之单词打卡统计
- python之cur.fetchall与cur.fetchone提取数据并统计处理操作
- python自动统计zabbix系统监控覆盖率的示例代码
- python 统计代码耗时的几种方法分享
- Python统计列表元素出现次数的方法示例
- Python jieba 中文分词与词频统计的操作
- 利用Python3实现统计大量单词中各字母出现的次数和频率的方法
- 使用Python 统计文件夹内所有pdf页数的小工具
- python 统计list中各个元素出现的次数的几种方法
- python调用百度AI接口实现人流量统计
- Python代码覆盖率统计工具coverage.py用法详解
- python 爬虫基本使用——统计杭电oj题目正确率并排序
- 利用python汇总统计多张Excel
- python统计mysql数据量变化并调用接口告警的示例代码
- 用python实现监控视频人数统计