1. 程式人生 > >利用Python和OpenCV將圖片URL直接轉換成OpenCV的圖片格式

利用Python和OpenCV將圖片URL直接轉換成OpenCV的圖片格式

首先要做的就是匯入我們必需的包。我們將使用NumPy轉換下載的位元組序為NumPy陣列,使用urllib來執行實際的網路請求,使用cv2來繫結OpenCV介面。

在第7行,我們定義了我們的url_to_image函式。這個函式帶一個url引數,也就是我們想要下載的影象地址。接下來,在第10行,我們使用urllib庫來開啟這個影象連結。11行則將這個下載下來的位元組序轉換為NumPy陣列。

至此,NumPy陣列還是一個1維陣列(也就是一個長長的畫素連結串列)。為了將其轉換為2維格式,假設每個畫素3個通道(意即分別為紅,綠,藍通道),在12行我們使用cv.imdecode函式。最後,在15行我們返回解碼出來的影象給呼叫函式。

一切就緒,該到讓它工作的時候了:


3-5行定義了我們將要下載和轉換為OpenCV格式的影象地址列表。

第9行我們遍歷這個列表,13行則呼叫url_to_image函式,然後在14行15行將獲取的影象顯示到螢幕上。到此呢,我們就可以像正常情況下一樣,使用OpenCV來操作和處理這些影象了。

      執行程式,就可以看到想要的結果了。


方法2:使用scikit-image

第二種方法假定你已經在你計算機上安裝好了scikit-image庫。讓我們看看怎樣採用scikit-image從URL獲取影象並將其轉換為OpenCV格式:


scikit-image庫中做得很漂亮的一點是:io

子庫中的imread函式能夠區分影象路徑到底在磁碟上還是一個URL(第9行)。儘管這樣,這裡有一個很嚴重的錯誤可能讓你跌一個跟頭!OpenCV以BGR順序表達一幅影象,然而scikit-image則是RGB順序。如果你使用scikit-iamge的imread函式,而且還想在下載完成後使用OpenCV的函式,那麼你要小心了。如41行所述,你需要將影象從RBG轉換為BGR。