這篇文章主要介紹了Python 透過URL開啟圖片實例詳解的相關資料,需要的朋友可以參考下
Python 透過URL開啟圖片實例詳解
不論是用OpenCV還是PIL,skimage等函式庫,在之前做影像處理的時候,幾乎都是讀取本地的圖片。最近嘗試爬蟲爬取圖片,在儲存之前,我希望能先快速瀏覽一次圖片,然後有選擇性的保存。這裡就需要從url讀取圖片了。查了很多資料,發現有這麼多種方法,這裡做個記錄。
本文用到的圖片URL如下:
img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg'
1.用OpenCV
OpenCV的imread()只能載入本地的圖片,並不能透過網址載入圖片。但是,opencv的VideoCapture類別可以從url載入影片。如果只用opencv的話,我們可以一個迂迴的方式:先用VideoCapure載入網址下的圖片,再傳給Mat。
import cv2 cap = cv2.VideoCapture(img_src) if( cap.isOpened() ) : ret,img = cap.read() cv2.imshow("image",img) cv2.waitKey()
2. OpenCV+Numpy+urllib
import numpy as np import urllib import cv2 resp = urllib.urlopen(img_src) image = np.asarray(bytearray(resp.read()), dtype="uint8") image = cv2.imdecode(image, cv2.IMREAD_COLOR) cv2.imshow("Image", image) cv2.waitKey(0)
urlopen傳回一個類別檔案物件,它提供如下方法:
read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與檔案物件完全一樣。然後把傳回的類別檔案物件重新編碼,轉換為圖片傳給Mat。
3.PIL+requests
import requests as req from PIL import Image from io import BytesIO response = req.get(img_src) image = Image.open(BytesIO(response.content)) image.show()
requests能以位元組的方式存取請求回應體,以上就是以請求傳回的二進位資料建立一張圖片的程式碼。
4.skimage
from skimage import io image = io.imread(img_src) io.imshow(image) io.show()
相對來說,這種方式應該是最簡單的,因為skimage可以直接以imread()函數來讀取網頁圖片,而不需要其他的輔助,也不需要迂迴。
以上是Python如何透過URL實現開啟圖片的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!