1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python圖像處理介紹--Python中的圖像表示

        共 7174字,需瀏覽 15分鐘

         ·

        2020-12-23 16:41

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        使用Python進(jìn)行圖像處理是理解如何通過(guò)數(shù)學(xué)和代碼表示圖片的有趣方法,希望這篇文章能讓您了解計(jì)算機(jī)是如何理解圖像數(shù)據(jù)的。


        讓我們從導(dǎo)入需要的庫(kù)開始吧!

        # First import the required Python Librariesimport numpy as npimport matplotlib.pyplot as pltfrom skimage import img_as_uintfrom skimage.io import imshow, imreadfrom skimage.color import rgb2hsvfrom skimage.color import rgb2gray

        一個(gè)圖像可以被認(rèn)為是一個(gè)矩陣,其中每個(gè)像素的顏色是由一個(gè)尺度上的數(shù)字表示。

        array_1 = np.array([[255, 0],                     [0, 255]])imshow(array_1, cmap = 'gray');

        上面的輸出是我們剛剛創(chuàng)建的矩陣的直觀表示。注意,我們不限于簡(jiǎn)單的2x2矩陣。以下是3x3矩陣的示例。

        array_2 = np.array([[255, 0, 255],                     [0, 255, 0],                    [255, 0, 255]])imshow(array_2, cmap = 'gray');

        我們的示例選擇的是光譜中最極端的顏色,但我們也可以訪問(wèn)介于兩者之間的任何顏色。

        array_spectrum = np.array([np.arange(0,255,17),                    np.arange(255,0,-17),                   np.arange(0,255,17),                   np.arange(255,0,-17)])fig, ax = plt.subplots(1, 2, figsize=(12,4))ax[0].imshow(array_spectrum, cmap = 'gray')ax[0].set_title('Arange Generation')ax[1].imshow(array_spectrum.T, cmap = 'gray')ax[1].set_title('Transpose Generation');

        下面的圖像是使用NumPy的arange函數(shù)構(gòu)造的,并通過(guò)獲取第一個(gè)圖像的轉(zhuǎn)置來(lái)創(chuàng)建了另一個(gè)圖像。


        為了簡(jiǎn)單起見,我們一直使用灰度,但請(qǐng)記住,計(jì)算機(jī)實(shí)際上理解的顏色是紅色,綠色和藍(lán)色的組合。因此,我們可以將圖像表示為三維矩陣。每個(gè)像素被表示為一個(gè)Python列表,用于指定它們的顏色組合。

        array_colors = np.array([[[255, 0, 0],                          [0, 255, 0],                         [0, 0, 255]]])imshow(array_colors);

        讓我們嘗試處理真實(shí)圖像,下面是一只可愛的小狗的圖片。

        doggo = imread('doggo.png')imshow(doggo);

        doggo.shape


        檢查圖像的大小,我們看到它是一個(gè)390x385x3矩陣。使用Python我們可以對(duì)這個(gè)矩陣進(jìn)行切片,并將每個(gè)部分表示為它自己的圖像。

        fig, ax = plt.subplots(1, 3,                        figsize=(6,4),                        sharey= True)    ax[0].imshow(doggo[:, 0:130])ax[0].set_title('First Split')    ax[1].imshow(doggo[:, 130:260])ax[1].set_title('Second Split')    ax[2].imshow(doggo[:, 260:390])ax[2].set_title('Third Split');

        而且我們也可以顯示圖像的任意部分,下面就是小狗的臉部顯示。

        imshow(doggo[95:250, 130:275]);

        現(xiàn)在讓我們做點(diǎn)有意思的事情~


        前面我們說(shuō)過(guò),一個(gè)圖像可以由一個(gè)三維矩陣表示,因此我們可以通過(guò)以下操作,將圖像分解成紅色、綠色和藍(lán)色來(lái)分別顯示。

        fig, ax = plt.subplots(1, 3, figsize=(12,4), sharey = True)ax[0].imshow(doggo[:,:,0], cmap='Reds')ax[0].set_title('Red')ax[1].imshow(doggo[:,:,1], cmap='Greens')ax[1].set_title('Green')ax[2].imshow(doggo[:,:,2], cmap='Blues')ax[2].set_title('Blue');

        此外,我們可以將圖像從RGB(紅,綠,藍(lán))轉(zhuǎn)換為HSV(色相,飽和度,值)。

        doggo_hsv = rgb2hsv(doggo)fig, ax = plt.subplots(1, 3, figsize=(12,4), sharey = True)ax[0].imshow(doggo_hsv[:,:,0], cmap='hsv')ax[0].set_title('Hue')ax[1].imshow(doggo_hsv[:,:,1], cmap='gray')ax[1].set_title('Saturation')ax[2].imshow(doggo_hsv[:,:,2], cmap='gray')ax[2].set_title('Value');

        最后,我們還可以將圖像矩陣轉(zhuǎn)換為灰度。通過(guò)將圖像轉(zhuǎn)換為簡(jiǎn)單的二維矩陣,這使我們能夠輕松地根據(jù)每個(gè)像素與指定值的關(guān)系來(lái)過(guò)濾圖像。

        doggo_gray = rgb2gray(doggo)fig, ax = plt.subplots(1, 5, figsize=(17,6), sharey = True)ax[0].imshow(doggo_gray, cmap = 'gray')ax[0].set_title('Grayscale Original')ax[1].imshow(img_as_uint(doggo_gray > 0.25),              cmap = 'gray')ax[1].set_title('Greater than 0.25')ax[2].imshow(img_as_uint(doggo_gray > 0.50),              cmap = 'gray')ax[2].set_title('Greater than 0.50');ax[3].imshow(img_as_uint(doggo_gray > 0.75),              cmap = 'gray')ax[3].set_title('Greater than 0.75');ax[4].imshow(img_as_uint(doggo_gray > np.mean(doggo_gray)),              cmap = 'gray')ax[4].set_title('Greater than Mean');

        通過(guò)本文我們了解了如何使用Python加載和操作圖像。為了更好地理解圖像在Python中的顯示,最好的辦法就是動(dòng)手復(fù)現(xiàn)一下上述代碼。

        使用Python進(jìn)行圖像處理是理解如何通過(guò)數(shù)學(xué)和代碼表示圖片的有趣方法,希望這篇文章能讓您了解計(jì)算機(jī)是如何理解圖像數(shù)據(jù)的。


        讓我們從導(dǎo)入需要的庫(kù)開始吧!

        # First import the required Python Librariesimport numpy as npimport matplotlib.pyplot as pltfrom skimage import img_as_uintfrom skimage.io import imshow, imreadfrom skimage.color import rgb2hsvfrom skimage.color import rgb2gray

        一個(gè)圖像可以被認(rèn)為是一個(gè)矩陣,其中每個(gè)像素的顏色是由一個(gè)尺度上的數(shù)字表示。

        array_1 = np.array([[255, 0],                     [0, 255]])imshow(array_1, cmap = 'gray');

        上面的輸出是我們剛剛創(chuàng)建的矩陣的直觀表示。注意,我們不限于簡(jiǎn)單的2x2矩陣。以下是3x3矩陣的示例。

        array_2 = np.array([[255, 0, 255],                     [0, 255, 0],                    [255, 0, 255]])imshow(array_2, cmap = 'gray');

        我們的示例選擇的是光譜中最極端的顏色,但我們也可以訪問(wèn)介于兩者之間的任何顏色。

        array_spectrum = np.array([np.arange(0,255,17),                    np.arange(255,0,-17),                   np.arange(0,255,17),                   np.arange(255,0,-17)])fig, ax = plt.subplots(1, 2, figsize=(12,4))ax[0].imshow(array_spectrum, cmap = 'gray')ax[0].set_title('Arange Generation')ax[1].imshow(array_spectrum.T, cmap = 'gray')ax[1].set_title('Transpose Generation');

        下面的圖像是使用NumPy的arange函數(shù)構(gòu)造的,并通過(guò)獲取第一個(gè)圖像的轉(zhuǎn)置來(lái)創(chuàng)建了另一個(gè)圖像。


        為了簡(jiǎn)單起見,我們一直使用灰度,但請(qǐng)記住,計(jì)算機(jī)實(shí)際上理解的顏色是紅色,綠色和藍(lán)色的組合。因此,我們可以將圖像表示為三維矩陣。每個(gè)像素被表示為一個(gè)Python列表,用于指定它們的顏色組合。

        array_colors = np.array([[[255, 0, 0],                          [0, 255, 0],                         [0, 0, 255]]])imshow(array_colors);

        讓我們嘗試處理真實(shí)圖像,下面是一只可愛的小狗的圖片。

        doggo = imread('doggo.png')imshow(doggo);

        doggo.shape


        檢查圖像的大小,我們看到它是一個(gè)390x385x3矩陣。使用Python我們可以對(duì)這個(gè)矩陣進(jìn)行切片,并將每個(gè)部分表示為它自己的圖像。

        fig, ax = plt.subplots(1, 3,                        figsize=(6,4),                        sharey= True)    ax[0].imshow(doggo[:, 0:130])ax[0].set_title('First Split')    ax[1].imshow(doggo[:, 130:260])ax[1].set_title('Second Split')    ax[2].imshow(doggo[:, 260:390])ax[2].set_title('Third Split');

        而且我們也可以顯示圖像的任意部分,下面就是小狗的臉部顯示。

        imshow(doggo[95:250, 130:275]);

        現(xiàn)在讓我們做點(diǎn)有意思的事情~


        前面我們說(shuō)過(guò),一個(gè)圖像可以由一個(gè)三維矩陣表示,因此我們可以通過(guò)以下操作,將圖像分解成紅色、綠色和藍(lán)色來(lái)分別顯示。

        fig, ax = plt.subplots(1, 3, figsize=(12,4), sharey = True)ax[0].imshow(doggo[:,:,0], cmap='Reds')ax[0].set_title('Red')ax[1].imshow(doggo[:,:,1], cmap='Greens')ax[1].set_title('Green')ax[2].imshow(doggo[:,:,2], cmap='Blues')ax[2].set_title('Blue');

        此外,我們可以將圖像從RGB(紅,綠,藍(lán))轉(zhuǎn)換為HSV(色相,飽和度,值)。

        doggo_hsv = rgb2hsv(doggo)fig, ax = plt.subplots(1, 3, figsize=(12,4), sharey = True)ax[0].imshow(doggo_hsv[:,:,0], cmap='hsv')ax[0].set_title('Hue')ax[1].imshow(doggo_hsv[:,:,1], cmap='gray')ax[1].set_title('Saturation')ax[2].imshow(doggo_hsv[:,:,2], cmap='gray')ax[2].set_title('Value');

        最后,我們還可以將圖像矩陣轉(zhuǎn)換為灰度。通過(guò)將圖像轉(zhuǎn)換為簡(jiǎn)單的二維矩陣,這使我們能夠輕松地根據(jù)每個(gè)像素與指定值的關(guān)系來(lái)過(guò)濾圖像。

        doggo_gray = rgb2gray(doggo)fig, ax = plt.subplots(1, 5, figsize=(17,6), sharey = True)ax[0].imshow(doggo_gray, cmap = 'gray')ax[0].set_title('Grayscale Original')ax[1].imshow(img_as_uint(doggo_gray > 0.25),              cmap = 'gray')ax[1].set_title('Greater than 0.25')ax[2].imshow(img_as_uint(doggo_gray > 0.50),              cmap = 'gray')ax[2].set_title('Greater than 0.50');ax[3].imshow(img_as_uint(doggo_gray > 0.75),              cmap = 'gray')ax[3].set_title('Greater than 0.75');ax[4].imshow(img_as_uint(doggo_gray > np.mean(doggo_gray)),              cmap = 'gray')ax[4].set_title('Greater than Mean');

        通過(guò)本文我們了解了如何使用Python加載和操作圖像。為了更好地理解圖像在Python中的顯示,最好的辦法就是動(dòng)手復(fù)現(xiàn)一下上述代碼。

        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目31講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目31講即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        下載4:leetcode算法開源書
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):leetcode,即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!



        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品国产三级国产AⅤ浪潮 | 国产色情电影在线观看 | 美女黄页网 | 性欧美孕妇孕交吊类hd | 一起操在线观看 | 性婬欧美老妇708090片 | 抽插网 | 欧美一级免费看 | 性爱视频播放 | 被黑人操 |