12
只是共享一種方法來創建從內存緩衝區或URL的opencv圖像對象,以提高性能。如何從內存緩衝區(StringIO)或從URL與opencv python庫中讀取圖像
有時我們會遇到圖像二值從網址,以避免額外的文件IO,我們要imread這個圖像從內存緩衝或網址,但imread只支持從路徑文件系統中讀取圖像。
只是共享一種方法來創建從內存緩衝區或URL的opencv圖像對象,以提高性能。如何從內存緩衝區(StringIO)或從URL與opencv python庫中讀取圖像
有時我們會遇到圖像二值從網址,以避免額外的文件IO,我們要imread這個圖像從內存緩衝或網址,但imread只支持從路徑文件系統中讀取圖像。
要創建與存儲器中緩衝液(StringIO的),我們可以使用的OpenCV API imdecode的OpenCV的圖像對象,請參閱以下代碼:
import cv2
import numpy as np
from urllib2 import urlopen
from cStringIO import StringIO
def create_opencv_image_from_stringio(img_stream, cv2_img_flag=0):
img_stream.seek(0)
img_array = np.asarray(bytearray(img_stream.read()), dtype=np.uint8)
return cv2.imdecode(img_array, cv2_img_flag)
def create_opencv_image_from_url(url, cv2_img_flag=0):
request = urlopen(url)
img_array = np.asarray(bytearray(request.read()), dtype=np.uint8)
return cv2.imdecode(img_array, cv2_img_flag)
返回的是無如果圖像不能被解碼。我必須添加從字符串開頭刪除'data:image/png; base64,'這是防止opencv解碼。 –
第二個答案我已經看到這樣但它不適合我。我不能相信它可以是一個這樣的問題加載一個URL從一個圖像打開cv – CashCow
imread給我一個TypeError:期望的字符串或Unicode對象,numpy.ndarray發現錯誤。 – raincrash