2017-08-17 5 views
2

Ich versuche, Bilder mit cv2 zu manipulieren. Die Bilder sind in URL-Form. Wenn ich versuche, eine cv2.imshow() Funktion auszuführen, erhalte ich folgende Fehlermeldung:So zeigen Sie Bilder von einer URL

error: (-215) size.width>0 && size.height>0 in function cv::imshow 

Hier einige Beispielcode ist:

im = cv2.imread('https://mp-media.reebonz.com/images/p-9a/reebonz-31-phillip- 
lim--ladies-bag-31-phillip-lim-1-9ad505f2-03fa-41c1-97dd- 
63c6695f89fa.jpg;mode=pad;bgcolor=fff;404=404.jpg') 
cv2.imshow('image', im) 

Wie würde ich die Bilder bekommen zu zeigen? Muss ich jedes Bild lokal herunterladen, bevor ich es manipuliere?

Antwort

0
from skimage import io 

url_path = "URL/path"  

image = io.imread(url_path) 

Es wird noch

zum Detail imread()

mit PIL eine temporäre Datei für die Verarbeitung des Bildes erstellen und urllib

from StringIO import StringIO 
from PIL import Image 
import urllib 

Image.open(StringIO(urllib.urlopen(url).read())) 
0

Sie können das Bild in ein Numpy Array konvertieren und dann in das OpenCV-Format einlesen. Dafür können Sie einfach eine Methode schreiben:

def url_to_image(url): 
     resp = urllib.urlopen(url) 
     image = np.asarray(bytearray(resp.read()), dtype="uint8") 
     image = cv2.imdecode(image, cv2.IMREAD_COLOR) 

     return image 

Dann in Ihrem Hauptcode können Sie die Methode aufrufen und das Bild wie folgt zeigen:

image = url_to_image(url) 
cv2.imshow("Image", image) 

Lassen Sie mich wissen, ob es funktioniert!

0

Versuchen Sie Videocapture?

import numpy as np 
import cv2 

cap = cv2.VideoCapture('URL/To/Your.jpg') 

# Read frame (read again if source changes like updated jpegs from a webcam) 
ret, frame = cap.read() 

cv2.imshow('image', frame) 

cv2.waitKey(0) 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 

sagt Google etwas ähnliches: http://answers.opencv.org/question/16385/cv2imread-a-url/

Verwandte Themen