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實現監控視頻人數統計