日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 计算机视觉(七)—— OpevCV进行直方图统计

發布時間:2025/3/19 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 计算机视觉(七)—— OpevCV进行直方图统计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文中涉及到的 matplotlib 繪圖庫的知識可以參考我的之前的文章:Python 繪圖庫 Matplotlib

目錄

1. 直方圖概述

(1)基本概念

(2)直方圖中的術語

BINS

DIMS

RANGE

2. 直方圖繪制

(1)讀取圖像信息

(2)繪制直方圖

灰度圖的直方圖?

彩色圖直方圖

3. 掩膜直方圖

(1)基本概念

(2)實現代碼

得到掩模圖

繪制掩膜直方圖?

4. H-S 直方圖

(1)基本概念

(2)繪制二維H-S直方圖

結束語


1. 直方圖概述

(1)基本概念

? ? ? ?直方圖就是對圖像的另外一種解釋,它描述了整幅圖像的灰度分布。直方圖的 x 軸代表灰度值(0~255),y 軸代表圖片中同一種灰度值的像素點的數目,所以通過直方圖我們可以對圖像的亮度、灰度分布、對比度等有了一個直觀的認識

(2)直方圖中的術語

BINS

? ? ? ?前面說到,直方圖中的 x 軸表示的是灰度值,一幅灰度圖的灰度等級有 256 級,所以我們是否需要將每一個等級標注在一條軸上呢?或者如果我們需要的不是每一個灰度值的分布,而是一個范圍內的灰度分布呢?所以我們將每一個需要的灰度值范圍稱為一個 BIN,即所有的灰度等級被分為幾個小組,每一個小組是一個 BIN

DIMS

? ? ? ?代表的是我們收集的圖像的參數的數目,直方圖我們如果只收集灰度值一個參數,那么該參數的值就是1

RANGE

? ? ? ?代表統計的灰度值的范圍,一般的范圍是[0-255]

2. 直方圖繪制

(1)讀取圖像信息

? ? ? ?在計算機視覺系列的文章中第一件事就是讀取圖像信息:

""" Author:XiaoMa date:2021/10/24 """ #調用需要的包 import cv2 import matplotlib.pyplot as pltimg0 = cv2.imread('E:\From Zhihu\For the desk\cvseven.jpeg') img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY) #轉化為灰度圖 h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img1) cv2.waitKey(delay = 0)

圖像信息如下:

419 636?

(2)繪制直方圖

繪制直方圖使用的函數如下:

hist = cv2.calcHist(images, channels, mask, histSize, ranges, accumulate) images:原圖 channels:指定通道 [0]代表灰度圖,如果讀入的圖像不是灰度圖,該值可以是[0],[1],[2]分別代表通道 B,G,R mask:掩碼圖像,進行整張圖的繪制時為 None histSize:BIN 的數量 ranges:像素值范圍 accumulate:累計標識,一般可以省略

灰度圖的直方圖?

#繪制直方圖 hist = cv2.calcHist([img1], [0], None, [256], [0, 255]) plt.plot(hist, color = 'lime', label = '直方圖', linestyle = '--') plt.legend() plt.savefig('E:\From Zhihu\For the desk\cvseven1.jpeg') plt.show()

??

? ? ? 可以看出這幅灰度圖中亮度較高的像素點還是占多數的,即整體亮度較高

彩色圖直方圖

讀入彩色圖像,并對某一個通道進行直方圖繪制

""" Author:XiaoMa date:2021/10/24 """ #調用需要的包 import cv2 import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei' #將全局中文字體改為黑體img0 = cv2.imread('E:\From Zhihu\For the desk\cvseven.jpeg') img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY) h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img0) cv2.waitKey(delay = 0)#繪制直方圖 hist = cv2.calcHist([img0], [0], None, [256], [0, 255]) plt.plot(hist, color = 'lime', label = '藍色通道直方圖', linestyle = '--', alpha = 1) plt.legend() plt.savefig('E:\From Zhihu\For the desk\cvseven1.jpeg') plt.show()

上圖就是對藍色通道繪制的直方圖?

3. 掩膜直方圖

(1)基本概念

? ? ? ?如果我們不需要整幅圖像中的直方圖,而是某個區域的直方圖,我們只需要繪制一幅圖,將需要統計的部分設置為白色,不需要統計的部分設置為黑色,就構成了一幅掩膜圖像

(2)實現代碼

得到掩模圖

##得到掩膜圖 mask = np.zeros(img0.shape, np.uint8) #將每一個像素點設置為0,就是黑色 mask[109:309, 212:412] = 255 #選取特定區域設置為白色 img0_1 = cv2.bitwise_and(img0, mask) #圖像與操作得到掩膜圖 cv2.namedWindow("W1") cv2.imshow("W1", img0_1) cv2.waitKey(delay = 0)

繪制掩膜直方圖?

#繪制掩膜直方圖 ##得到掩膜圖 mask = np.zeros(img1.shape, np.uint8) #將每一個像素點設置為0,就是黑色 mask[109:309, 212:412] = 255 #選取特定區域設置為白色 img1_1 = cv2.bitwise_and(img1, mask) #圖像與操作得到掩膜圖 cv2.namedWindow("W1") cv2.imshow("W1", img1_1) cv2.waitKey(delay = 0) ##繪制掩膜直方圖和部分圖像直方圖 hist1 = cv2.calcHist([img1], [0], mask, [256], [0, 255]) #掩膜圖直方圖,參數需要修改 hist2 = cv2.calcHist([img1], [0], None, [256], [0,255]) plt.plot(hist1, color = 'b', label = '掩膜直方圖', linestyle = '--') plt.plot(hist2, color = 'r', label = '原圖直方圖', linestyle = '-.') plt.legend() plt.savefig('E:\From Zhihu\For the desk\cvseven2.jpeg') plt.show()

得到的圖像如下:
??

4. H-S 直方圖

(1)基本概念

? ? ? ? H(Hue) - S(Saturation) 直方圖,即色調 - 飽和度直方圖

?繪制該直方圖需要將源RGB圖像轉化到 HSV (色調、飽和度、亮度)顏色空間中去

對于HSV空間的介紹可以參考:圖像處理(HSV)

img0_2 = cv2.cvtColor(img0, cv2.COLOR_BGR2HSV) #將 RGB 空間轉化為 HSV 空間 cv2.namedWindow("W2") cv2.imshow("W2", img0_2) cv2.waitKey(delay = 0)

??

(2)繪制二維H-S直方圖

此處參考:OpenCV 官網

##繪制H-S直方圖 hist3 = cv2.calcHist ([img0_2], [0, 1], None , [180, 256], [0, 180, 0, 256])#官網給出的解釋:channel = [0,1] 因為我們需要同時處理 H 和 S 平面;bins = [180,256] H 平面為 180,S 平面為 256;range = [0,180,0,256] 色調值介于 0 和 180 之間,飽和度介于 0 和 256 之間 plt.imshow(hist3) plt.savefig('E:\From Zhihu\For the desk\cvseven3.jpeg') plt.show()

得到的圖像如下:

? ? ? ??上圖中的 X 軸代表S(飽和度),Y軸代表H(色調)?

? ? ? ? 該圖中的峰值主要分布在 S 在(0-50)之間 H在(20-80),至于為什么峰值較少,個人猜測是由于原圖中的色彩變化不明顯,導致沒辦法繪制出過多過明顯的峰值

結束語

? ? ? ?本篇文章簡單介紹了圖像直方圖的概念,并進行了直方圖、掩膜直方圖、H-S 直方圖的繪制,參考的一些文章都添加在了原文中,如果需要深入了解可以點進去進行學習,加油!

總結

以上是生活随笔為你收集整理的Python 计算机视觉(七)—— OpevCV进行直方图统计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av网站在线免费播放 | 色综合天天综合网天天看片 | 韩日黄色片 | 日韩毛片在线观看 | 欧美日韩亚洲免费 | 欧美激情免费看 | 91亚洲视频在线观看 | 韩日av| 黄网站免费在线观看 | 日本福利视频导航 | 色婷婷av一区二区三区大白胸 | 丁香六月婷婷综合 | 精品久久成人 | 91久久久久久 | 亚洲天堂av在线免费观看 | 黑人玩弄人妻一区二区三区 | 草逼网站 | 亚洲精品乱码久久久久久久 | 青青草原综合网 | 日韩美av| 美女被草网站 | 久久久久亚洲AV成人网人人小说 | 老司机在线观看视频 | 国产123在线 | 69国产视频 | 成人玩具h视频 | 美痴女~美人上司北岛玲 | 国产精品蜜臀av | 婷婷网五月天 | 亚洲激情视频一区 | 亚洲av成人精品毛片 | 又黄又色的网站 | av这里只有精品 | 91精品国产91久久久久青草 | 午夜免费激情视频 | 国产精品sm | 麻豆影视在线播放 | 日韩欧美三级 | 91超碰在线 | 中国老熟妇自拍hd发布 | 伊人黄色网 | av有码在线 | 欧美一区一区 | 欧美视频免费看欧美视频 | 国产欧美日韩另类 | 性感美女黄色片 | 日韩欧美一二区 | www.国产精品 | 国产男男gay | av55 | 免费高清av在线看 | 日韩在线黄色 | 黄色av免费在线看 | 91精东传媒理伦片在线观看 | 99热在线这里只有精品 | 爱爱爱爱网站 | 亚洲a√| 亚洲另类欧美日韩 | 久久精品夜色噜噜亚洲a∨ 中文字幕av网 | 一本色道久久88综合日韩精品 | 国产精品一品二区三区的使用体验 | 国产成人av一区二区三区不卡 | 视频在线 | jizz欧美大片 | 国产三级精品在线 | 成人午夜av在线 | 毛片1000部免费看 | 铠甲勇士猎铠 | 色大师在线观看 | av资源吧首页 | 国产97免费视频 | 天天色棕合合合合合合合 | 91精品国产91 | 男女啪啪网站免费 | 欧美黑人性受xxxx精品 | 蜜芽一区二区 | 国产精品一区久久 | 91久精品| 91亚洲国产成人精品一区二三 | 国产一级片免费 | 午夜一区二区三区四区 | 国产永久在线观看 | 高清不卡一区二区三区 | 91国内 | 欧美精品久久久久久 | 国产又粗又长 | 三级黄色av | 亚洲资源网站 | 献给魔王伊伏洛基亚吧动漫在线观看 | 国产熟妇一区二区三区四区 | 成人黄色片免费 | 涩五月婷婷| 黄色一级大片在线观看 | 亚洲成人自拍视频 | 天堂网一区| 91超碰在线观看 | 亚洲a成人| 在线播放a| 国产小视频你懂的 | 亚洲17p |