您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python统计RGB图片某像素的个数案例

51自学网 2021-10-30 22:49:05
  python
这篇教程python统计RGB图片某像素的个数案例写得很实用,希望能帮到您。

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

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

代码如下:

from PIL import Imageimport numpy as npimport cv2img_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 cvimport matplotlib.pyplot as pltimport numpy as npdef 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 cvimport matplotlib.pyplot as pltimport numpy as npdef 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()

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


解决PyTorch与CUDA版本不匹配的问题
json 转 mot17数据格式的实现代码 (亲测有效)
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。