如何显示网址中的图片

时间:2017-08-17 04:44:13

标签: python opencv

我正在尝试使用cv2操纵图像。图像采用网址格式。当我尝试运行cv2.imshow()函数时,出现以下错误:

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

以下是一些示例代码:

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)

我如何才能显示图像?我是否必须在操作之前在本地下载每个图像?

3 个答案:

答案 0 :(得分:1)

您可以将图像转换为Numpy数组,然后将其读入OpenCV格式。为此你可以简单地写一个方法:

 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

然后在您的主代码中,您可以调用方法并显示如下图像:

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

让我知道它是否有效!

答案 1 :(得分:1)

from skimage import io

url_path = "URL/path"    

image = io.imread(url_path)

它仍会创建一个用于处理图像的临时文件

详细信息 imread()

使用PIL和urllib

from StringIO import StringIO
from PIL import Image
import urllib

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

答案 2 :(得分:0)

你试过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()
谷歌说了类似的话: http://answers.opencv.org/question/16385/cv2imread-a-url/