python統(tǒng)計(jì)RGB圖片某像素的個(gè)數(shù)案例
1.對(duì)于RGB三通道圖片,直接用兩層for循環(huán)的話,效率比較低
2.可以先將RGB圖片轉(zhuǎn)為灰度圖片,再利用numpy.where的廣播機(jī)制統(tǒng)計(jì)像素個(gè)數(shù)。這里有一個(gè)前提是提前知道與灰度圖片的像素值相對(duì)應(yīng)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對(duì)應(yīng)(0,0,0),62對(duì)應(yīng)(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 像素個(gè)數(shù):{} 占比:%{}".format(color_0_0_0,color_0_0_0/pixel_sum*100)) print("19_69_139 像素個(gè)數(shù):{} 占比:%{}".format(color_19_69_139,color_19_69_139/pixel_sum*100))
補(bǔ)充:OpenCV---如何統(tǒng)計(jì)圖像的像素分布值個(gè)數(shù)(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()
運(yùn)行效果:
像素分布統(tǒng)計(jì)圖
代碼解釋:
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) #將圖像轉(zhuǎn)換成灰度圖, cv.imshow("gray",gray) hest = np.zeros([256],dtype = np.int32) #建立空白數(shù)組 for row in range(h): for col in range(w): pv = gray[row,col] hest[pv] +=1 #統(tǒng)計(jì)不同像素值出現(xiàn)的頻率 plt.plot(hest,color = "r") plt.xlim([0,256]) plt.show() #畫出統(tǒng)計(jì)圖 cv.waitKey(0) cv.destroyAllWindows() statistics()
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
關(guān)于Python使用logging庫(kù)進(jìn)行有效日志管理的方法詳解
在開發(fā)大型軟件或處理復(fù)雜問題時(shí),我們經(jīng)常需要一種方法來記錄和跟蹤程序的運(yùn)行狀態(tài),Python 提供了一個(gè)名為 logging 的標(biāo)準(zhǔn)庫(kù),可以幫助我們更好地完成這項(xiàng)任務(wù),在這篇文章中,我們將介紹如何使用 Python 的 logging 庫(kù)進(jìn)行日志記錄2023-06-06Python logging模塊進(jìn)行封裝實(shí)現(xiàn)原理解析
這篇文章主要介紹了Python logging模塊進(jìn)行封裝實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08簡(jiǎn)單了解為什么python函數(shù)后有多個(gè)括號(hào)
這篇文章主要介紹了簡(jiǎn)單了解為什么python函數(shù)后有多個(gè)括號(hào),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Pandas使用query()優(yōu)雅的查詢實(shí)例
本文主要介紹了Pandas使用query()優(yōu)雅的查詢實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01使用Python代碼識(shí)別股票價(jià)格圖表模式實(shí)現(xiàn)
這篇文章主要為大家介紹了使用Python代碼識(shí)別股票價(jià)格圖表模式的實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Python中BeautifulSoup通過查找Id獲取元素信息
這篇文章主要介紹了Python中BeautifulSoup通過查找Id獲取元素信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12