<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          高級(jí) OpenCV:BGR 像素強(qiáng)度圖

          共 3400字,需瀏覽 7分鐘

           ·

          2022-07-09 20:43

          介紹

          到目前為止,在我們的高級(jí) OpenCV 教程中,我們已經(jīng):

          • 理解對(duì)比度的概念。

          • 了解直方圖均衡的概念。

          • 在灰度圖像上實(shí)施對(duì)比度增強(qiáng)。

          • 繪制灰度圖像的像素直方圖。

          然而,眾所周知,我們的世界由很多很多顏色組成?,F(xiàn)在我們將嘗試分析彩色圖像的對(duì)比度和像素強(qiáng)度,即存在顏色通道的圖像。

          為了促進(jìn)這種特殊的高級(jí) OpenCV 學(xué)習(xí)體驗(yàn),我們將使用可從此鏈接(https://wallpaperaccess.com/cool-outer-space)下載的圖像?;蛘?,你可以保存下面找到的圖像。



          了解彩色圖像

          如果你閱讀過我們之前的文章,沒記錯(cuò)的話,我們了解了高級(jí) OpenCV 使用 BGR 顏色通道,而不是 RGB。你會(huì)發(fā)現(xiàn)紅色和藍(lán)色通道已被交換。

          如上圖所示,有很多顏色既醒目又吸引眼球。這些不同色調(diào)的顏色是混合顏色通道的結(jié)果。

          此圖像中存在三個(gè)顏色通道

          • 藍(lán)色

          • 綠色

          • 紅色

          正是通過這些顏色的混合,才能出現(xiàn)屬于色譜的二次色和許多其他顏色。



          獲得圖像洞察力

          第一步也是最重要的一步是將必要的包導(dǎo)入到我們的 python 腳本中,然后我們將圖像加載到我們的系統(tǒng) RAM 中。這將使用通過 OpenCV 包提供的 imread() 方法來(lái)完成:

          import cv2
          import numpy as np
          from matplotlib import pyplot as plt
          img = cv2.imread('C:/Users/Shivek/Pictures/Picture1.jpg')

          上述代碼塊的輸出將顯示如下:

          正如人們可能觀察到的那樣,圖像太大而無(wú)法在我的屏幕上以全尺寸顯示。但是,我們不會(huì)減小圖像的大小。這是因?yàn)槲覀兿肷钊肓私庀袼氐膶傩院拖嚓P(guān)信息。

          首先,讓我們查看 Image 的形狀(NumPy 數(shù)組):

          print(image.shape)

          上述代碼行的輸出將顯示如下:

          在仔細(xì)檢查這一信息元組后,將按如下方式對(duì)其進(jìn)行解密:



          顏色通道是BGR-NOT RGB。接下來(lái),讓我們查看圖像的大小——大小告訴我們構(gòu)成整個(gè)圖像的像素總數(shù)。

          print(image.size)

          輸出:

          6912000

          我們的圖像中有超過 600 萬(wàn)像素。

          讓我們查看圖像中的第一個(gè)像素。這是第一行第一列中的像素。

          print(image[0][0])



          它的 BGR 值分別為 22、15 和 6。

          現(xiàn)在我們繼續(xù):BGR 像素計(jì)數(shù)圖。

          BGR 像素強(qiáng)度線圖

          由于我們圖像中的每個(gè)像素都包含 3 個(gè)顏色通道,因此我們將需要遍歷所有像素 3 次,每次分別從 B、G 和 R 通道中挑選出值。要執(zhí)行此操作,可以將 for 循環(huán)與 enumerate() 函數(shù)結(jié)合使用。

          我們可能已經(jīng)知道, enumerate() 函數(shù)將允許我們遍歷固定數(shù)量的元素,并自動(dòng)記錄每個(gè)元素的數(shù)量。

          我們將使用 MatPlotLib 包以折線圖的形式獲得像素強(qiáng)度和計(jì)數(shù)的視覺效果。

          colors = ('blue','green','red')
          label = ("Blue""Green""Red")
          for count,color in enumerate(colors):
              histogram = cv2.calcHist([image],[count],None,[256],[0,256])
              plt.plot(histogram,color = color, label=label[count]+str(" Pixels"))

          上述代碼塊的逐行解釋如下:

          在下面的代碼行中,我們創(chuàng)建了一個(gè)元組,其中包含圖形三個(gè)不同線條的顏色。由于有 3 次迭代,每次迭代都會(huì)選擇不同的顏色,因此我們可以在圖表上看到 BGR 模式。

          顏色=('藍(lán)色','綠色','紅色')

          此后,我們繼續(xù)創(chuàng)建一個(gè)元組,其中包含圖表圖例的相應(yīng)標(biāo)簽。同樣,在每次迭代時(shí),將選擇一個(gè)標(biāo)簽來(lái)標(biāo)記圖形的相應(yīng)顏色。這些標(biāo)簽將包含在圖表的圖例中,我們將在后面的代碼行中看到。

          label = ("Blue""Green""Red")

          為了便于圖形生成,我們有一個(gè) for-enumerate 循環(huán),該循環(huán)將被執(zhí)行以從像素?cái)?shù)組和元組中選擇每個(gè)所需項(xiàng)目,在這些項(xiàng)目上,它們將在同一畫布上繪制為折線圖。

          for count,color in enumerate(colors):
              histogram = cv2.calcHist([image],[count],None,[256],[0,256])
              plt.plot(histogram,color = color, label=label[count]+str(" Pixels"))

          for循環(huán)中的代碼行如下所示:

              histogram = cv2.calcHist([image],[count],None,[256],[0,256])

          我們將使用 OpenCV 包中的 calcHist() 方法,該方法將獲得像素強(qiáng)度的直方圖,正如我們?cè)谥暗奈恼轮兴私獾哪菢?。我們傳入以下參?shù):

          為了繪制圖形,我們使用 MatPlotLib 包提供的 plot() 方法,如下所示:

          plt.plot(histogram, color=color, label=label[count]+str(" Pixels"))

          我們傳入要繪制的數(shù)據(jù),然后是適當(dāng)?shù)念伾?。為圖指定一個(gè)標(biāo)簽,并根據(jù)for循環(huán)迭代索引元組中的相應(yīng)標(biāo)簽。我們將“像素”附加到標(biāo)簽名稱中,以使查看者清楚地看到完成的圖形。

          在將圖表顯示給最終用戶之前,我們?cè)趫D表中添加了一些元素,例如:

          • 標(biāo)題。

          • Y 軸的標(biāo)簽。

          • X 軸的標(biāo)簽。

          • 一個(gè)圖例。

          為了結(jié)束處理,我們使用 MatPlotLib 包提供的 show() 方法在屏幕上顯示視覺效果。

          plt.title("Histogram Showing Number Of Pixels Belonging To Respective Pixel Intensity", color="crimson")
          plt.ylabel("Number Of Pixels", color="crimson")
          plt.xlabel("Pixel Intensity", color="crimson")
          plt.legend(numpoints=1, loc="best")
          plt.show()

          最終的 BGR 像素強(qiáng)度線圖將如下所示:



          上面的可視化顯示并準(zhǔn)確地告訴我們像素在原始彩色圖像中是如何分布的。構(gòu)成我們圖像的 600 萬(wàn)+ 像素的位置可以概括在上面的線圖中。

          我們的大部分像素都位于圖像的左側(cè),從圖中可以看出,圖像的中間到右側(cè)是藍(lán)色的,如藍(lán)色像素強(qiáng)度線所示。藍(lán)色像素強(qiáng)度線在這些區(qū)域中占主導(dǎo)地位 - 如果人們查看圖像,是這樣的:



          請(qǐng)注意完整圖像如何適合我的計(jì)算機(jī)屏幕 - 這是因?yàn)槲艺{(diào)整了它的大小。

          一個(gè)非常有趣的事實(shí)是,雖然我已經(jīng)調(diào)整了圖像的大小,但如果我要在調(diào)整大小的圖像上創(chuàng)建一個(gè)像素強(qiáng)度圖,那么與原始圖像相比,BGR 圖的梯度并沒有任何不同——它只是縮小了大小或“規(guī)模”。

          結(jié)論

          在本文中,我們研究了:

          • 在 Python 編程語(yǔ)言中使用 OpenCV 理解彩色圖像

          • BGR 顏色通道

          • 使用 Python 中的 MatPlotLib 包將 BGR 像素映射到 BGR 像素強(qiáng)度線圖


          瀏覽 151
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中字无码 | 国产殴美在线播放视频 | 日本A级天堂 | [无码破解]AV破解版HD在线观看 | 黑丝美女操逼 |