在OpenCV中通过图片的URL地址获取图片:

# -*- coding: utf-8 -*-
import numpy as np
import urllib
import cv2 # URL到图片
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)
# bytearray将数据转换成(返回)一个新的字节数组
# asarray 复制数据,将结构化数据转换成ndarray
image = np.asarray(bytearray(resp.read()), dtype="uint8")
# cv2.imdecode()函数将数据解码成Opencv图像格式
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# return the image
return image # 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"
] # 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)

以上过程用到bytearray、numpy.asarray、cv2.imdecode

Python bytearray()

bytearray是Python内的一个类,bytearray()返回一个新字节数组,可以看做是array的字节表示。bytearray()需要一个数组作为参数,这个数组里的元素是可变的,并且数组里每个元素的值范围是: 0 <= x < 256。

bytearray()使用:

# -*- coding: utf-8 -*-
a = bytearray()
b = bytearray([1,2,3,4,5])
c = bytearray('ABC','UTF-8')
d = bytearray(u'中文','UTF-8')
print type(a)
print type(b)
print c
print d
print(len(a))
print(len(b))
print(len(c))
print(len(d))

输出:

<type 'bytearray'>
<type 'bytearray'>
ABC
中文
0
5
3
6

numpy.asarray()

numpy.asarray()函数的作用是将输入数据(列表的列表,元组的元组,元组的列表等结构化数据)转换为numpy中矩阵(ndarray、多维数组对象)的形式。

# -*- coding: utf-8 -*-
import numpy as np data1=[[1,2,3],[1,2,3],[1,2,3]]
data2=[(1,2,3),(1,2,3),(1,2,3)]
data3=[(1,2,3,1,2,3,1,2,3)]
data4=[1,2,3,1,2,3,1,2,3] arr1=np.array(data1)
arr2=np.array(data1)
arr3=np.array(data3)
arr4=np.array(data4) print arr1
print arr2
print arr3
print arr4

输出:

[[1 2 3]
[1 2 3]
[1 2 3]]
[[1 2 3]
[1 2 3]
[1 2 3]]
[[1 2 3 1 2 3 1 2 3]]
[1 2 3 1 2 3 1 2 3]

指定转换类型

# -*- coding: utf-8 -*-
import numpy as np data1=[[1,2,3],[1,2,3],[1,2,3]]
data2=[(1,2,3),(1,2,3),(1,2,3)]
data3=[(1,2,3,1,2,3,1,2,3)]
data4=[1,2,3,1,2,3,1,2,3] arr1=np.array(data1,'f')
arr2=np.array(data1,'f')
arr3=np.array(data3,'f')
arr4=np.array(data4,'f') print arr1
print arr2
print arr3
print arr4

'f'表示float浮点型,输出:

[[ 1.  2.  3.]
[ 1. 2. 3.]
[ 1. 2. 3.]]
[[ 1. 2. 3.]
[ 1. 2. 3.]
[ 1. 2. 3.]]
[[ 1. 2. 3. 1. 2. 3. 1. 2. 3.]]
[ 1. 2. 3. 1. 2. 3. 1. 2. 3.]

array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会,跟数据源指向同一块内存。

使用Python和OpenCV通过网址URL获取图片的更多相关文章

  1. iOS根据Url 获取图片尺寸

    iOS根据Url 获取图片尺寸 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([i ...

  2. 根据Url 获取图片尺寸 iOS

    // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL {     NSURL* URL = nil;     if([imageURL ...

  3. iOS开发——根据Url 获取图片尺寸

    转自:http://www.oschina.net/code/snippet_2248391_53038 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:( ...

  4. 根据URL获取图片

    背景:今天因为生产环境的系统界面图片无法显示被领导叼了一波,之前用Hutool工具类解析URL获取图片的,在生产环境上跑了一个多月都正常,嘣,今天突然发现周六下午后的图片统统显示异常,之后改为用jav ...

  5. C# url获取图片流转字符串

    //http url获取图片流转字符串 //string url = serverUrl.TrimEnd('/') + PUrl; //WebRequest request = WebRequest. ...

  6. 利用opencv从USB摄像头获取图片

    由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...

  7. Python中Opencv和PIL.Image读取图片的差异对比

    近日,在进行深度学习进行推理的时候,发现不管怎么样都得不出正确的结果,再仔细和正确的代码进行对比了后发现原来是Python中不同的库读取的图片数组是有差异的. image = np.array(Ima ...

  8. [django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来

    今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题. 我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染.因为r ...

  9. 通过url获取图片尺寸的几种方法:JS和php

    首先是js的方法,通过new一个Image对象,设置src属性,并监听complete和onload事件,图片加载完成后输出图片的宽度和高度 function checkPicurl(url){ va ...

随机推荐

  1. python操作——RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue,消息队列(MQ)是一种应用程序对 ...

  2. python有哪些好的学习资料或者博客?

    推荐Full Stack Python 有各种python资源汇总,从基础入门到各种框架web应用开发和部署,再到高级的ORM.Docker都有.以下是Full Stack Python 上总结的一些 ...

  3. Loadrunner之脚本篇——事务函数

    1.事务的开始和结束名称需要相同 lr_start_transaction(“transaction_name”); …//事务处理 lr_end_transaction(“transaction_n ...

  4. SM3算法

    /* * sm3.h * * 为使此算法兼容32位.64位下Linux或Windows系统, * 选择 int 来表示 32 位整数. * 消息长度最大限定为 2**32 - 1(单位:比特), * ...

  5. Linux软件包管理 RMP包

    RPM 包的安装虽然很方便和快捷,但是依赖性实在是很麻烦,尤其是库文件依赖,还要去 rpmfind 网站査找库文件到底属于哪个 RPM 包,从而导致 RPM 包的安装非常烦琐.那么,有没有可以自动解决 ...

  6. [SCOI2003]蜘蛛难题

    题目 对于当年来说似乎是神题?? 做法 对于联通注水来说,我们考虑把所有能平分到水的桶同时加高度,然后暴力判断 My complete code copy来的代码 #include <cstdi ...

  7. SOA 面向服务架构 阅读笔记(六)

    20 SOA质量 服务质量是成功的关键因素 20.1 了解SOA带来的无法预料的挑战 不同部门开发 每个开发的组件整合在一起,形成复合应用程序 整合业务流程,考虑质量问题 衡量SOA的质量. 事物质量 ...

  8. Scrapy安装方法

    Scrapy安装在Python2.7环境下 1.配置环境变量: 2.安装基础软件 4个(64位系统) 安装twisted: C:\Users\Administrator>pip  install ...

  9. 用blastn比对自己建立的数据库

    自己感兴趣的一些序列作为数据库,然后用blastn把测序的read比对到自己建立的数据库中. 1.用fasta文件创建blast数据库 makeblastdb -in input_file -inpu ...

  10. 用代码实现断开Android手机USB连接【转】

    本文转载自:https://blog.csdn.net/phoebe_2012/article/details/47025309 用代码实现断开Android手机USB连接               ...