我正在尝试使用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)
我如何才能显示图像?我是否必须在操作之前在本地下载每个图像?
答案 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/