前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Convert URL to image with Python and OpenCV(根据URL下载图片)

Convert URL to image with Python and OpenCV(根据URL下载图片)

作者头像
bear_fish
发布2018-09-19 12:08:21
1.4K0
发布2018-09-19 12:08:21
举报

http://www.pyimagesearch.com/2015/03/02/convert-url-to-image-with-python-and-opencv/

And as a bonus we’ll also see how we can utilize scikit-image to download an image from a URL, along with a common “gotcha” that could trip you up along the way.

OpenCV and Python versions: In order to run this example, you’ll need Python 2.7 and OpenCV 2.4.X.

Method #1: OpenCV, NumPy, and urllib

The first method we’ll explore is converting a URL to an image using the OpenCV, NumPy, and the urllib libraries. Open up a new file, name it url_to_image.py , and let’s get started:

代码语言:javascript
复制
# import the necessary packages
import numpy as np
import urllib
import cv2
 
# METHOD #1: OpenCV, NumPy, and urllib
def url_to_image(url):
	# download the image, convert it to a NumPy array, and then read
	# it into OpenCV format
	resp = urllib.urlopen(url)
	image = np.asarray(bytearray(resp.read()), dtype="uint8")
	image = cv2.imdecode(image, cv2.IMREAD_COLOR)
 
	# return the image
	return image

The first thing we’ll do is import our necessary packages. We’ll use NumPy for converting the byte-sequence from the download to a NumPy array, urllib  to perform the actual request, and cv2  for our OpenCV bindings.

We then define our url_to_image  function on Line 7. This function requires a single argument, url , which is the URL of the image we want to download.

Next, we utilize the urllib  library to open a connection to the supplied URL on Line 10. The raw byte-sequence from the request is then converted to a NumPy array on Line 11.

At this point the NumPy array is a 1-dimensional array (i.e. a long list of pixels). To reshape the array into a 2D format, assuming 3 components per pixel (i.e. the Red, Green, and Blue components, respectively), we make a call to cv2.imdecode  on Line 12. Finally, we return the decoded image to the calling function on Line 15.

代码语言:javascript
复制
# initialize the list of image URLs to download
urls = [
	"http://www.pyimagesearch.com/wp-content/uploads/2015/01/opencv_logo.png",
	"http://www.pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png",
	"http://www.pyimagesearch.com/wp-content/uploads/2014/12/adrian_face_detection_sidebar.png",
]
 
# loop over the image URLs
for url in urls:
	# download the image URL and display it
	print "downloading %s" % (url)
	image = url_to_image(url)
	cv2.imshow("Image", image)
	cv2.waitKey(0)

Lines 18-21 define a list of image URLs that we are going to download and convert to OpenCV format.

We start looping over each of these URLs on Line 25, make a call to oururl_to_image  function on Line 28, and then finally display our downloaded image to our screen on Lines 29 and 30. At this point our image can be manipulated with any other OpenCV functions as we normally would.

To see our work in action, open up a terminal and execute the following command:

Method #2: scikit-image

The second method assumes that you have the scikit-image library installed on your system. Let’s take a look at how we can leverage scikit-image to download an image from a URL and convert it to OpenCV format:

代码语言:javascript
复制
# METHOD #2: scikit-image
from skimage import io
 
# loop over the image URLs
for url in urls:
	# download the image using scikit-image
	print "downloading %s" % (url)
	image = io.imread(url)
	cv2.imshow("Incorrect", image)
	cv2.imshow("Correct", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
	cv2.waitKey(0)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Method #1: OpenCV, NumPy, and urllib
  • Method #2: scikit-image
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档