利用Python和OpenCV將圖片URL直接轉換成OpenCV的圖片格式
阿新 • • 發佈:2019-02-18
首先要做的就是匯入我們必需的包。我們將使用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。