首頁  >  文章  >  後端開發  >  Python如何透過URL實現開啟圖片的實例詳解

Python如何透過URL實現開啟圖片的實例詳解

黄舟
黄舟原創
2017-06-04 10:16:162211瀏覽

這篇文章主要介紹了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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn