<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>

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

          共 7174字,需瀏覽 15分鐘

           ·

          2020-12-23 16:41

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

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


          讓我們從導入需要的庫開始吧!

          # 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

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

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

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

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

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

          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ù)構造的,并通過獲取第一個圖像的轉置來創(chuàng)建了另一個圖像。


          為了簡單起見,我們一直使用灰度,但請記住,計算機實際上理解的顏色是紅色,綠色和藍色的組合。因此,我們可以將圖像表示為三維矩陣。每個像素被表示為一個Python列表,用于指定它們的顏色組合。

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

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

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

          doggo.shape


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

          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)在讓我們做點有意思的事情~


          前面我們說過,一個圖像可以由一個三維矩陣表示,因此我們可以通過以下操作,將圖像分解成紅色、綠色和藍色來分別顯示。

          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(紅,綠,藍)轉換為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');

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

          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');

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

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


          讓我們從導入需要的庫開始吧!

          # 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

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

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

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

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

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

          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ù)構造的,并通過獲取第一個圖像的轉置來創(chuàng)建了另一個圖像。


          為了簡單起見,我們一直使用灰度,但請記住,計算機實際上理解的顏色是紅色,綠色和藍色的組合。因此,我們可以將圖像表示為三維矩陣。每個像素被表示為一個Python列表,用于指定它們的顏色組合。

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

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

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

          doggo.shape


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

          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)在讓我們做點有意思的事情~


          前面我們說過,一個圖像可以由一個三維矩陣表示,因此我們可以通過以下操作,將圖像分解成紅色、綠色和藍色來分別顯示。

          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(紅,綠,藍)轉換為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');

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

          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');

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

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

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

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          下載4:leetcode算法開源書
          小白學視覺公眾號后臺回復:leetcode即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!



          交流群


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


          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美性爱网址大全 | 一级乱轮视频 | 老司机天天综合网 | 国产高清无码在线观看 | 国产精品久久7777777 |