python适合机器视觉_Python机器视觉编程常用数据结构与示例
本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容:
数据结构
序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multipying)等
列表:创建、list函数、基本操作:赋值、删除、分片赋值、插入、排序等
元组:创建、tuple函数、基本操作
NumPy数组:创建数组、创建图像、获取形状、维度、元素个数、元素类型、访问像素、通道分离、使用mask
1. 数据结构
数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。在Python中最基本的数据结构是序列(sequence)。序列中每个元素被分配一个序号——即元素的位置,也称为索引(index),第一个元素的索引是0,第二个是1,以此类推。
python包含6种內建序列,最常用的两种类型是:列表和元组。列表和元组的主要区别在于列表可以修改,元组不可以修改。而用于处理图像的基本数据结构是数组,由于Python标准库中的內建数组只能处理一维数组并且提供的功能较少,因此做编程时常使用NumPy模块的array()数组表示图像,并进行各类处理。
2. 通用序列操作
所有序列都可以进行某些特定操作,包括:索引(indexing)、分片(slicing)、加(adding)、乘(multipying)以及检查某个元素是否属于序列成员(成员资格),除此之外,python还有计算序列长度、找出最大元素和最小元素的內建函数。
(1)索引
序列中所有元素的编号都是从0开始递增。
>>>greeting = 'Hello'
>>>greeting[0]
'H'
>>>greeting[1]
'e'
所有序列都可以通过这种方式获取元素。最后一个元素的编号是-1
>>>greeting[-1]
'o'
如果一个函数调用返回一个序列,则可以直接对返回序列进行索引操作
>>>fourth = raw_input('Year: ')[3]
Year: 2016
>>>fourth
6
(2)分片
使用分片操作来方位一定范围内的元素。分片通过冒号隔开两个索引来实现。
>>>tag='Python web site'
>>>tag[9:30]
'"http://www.python.org '
>>>numbers=[1,2,3,4,5,6,7,8,9,10]
>>>numbers[3:6]
[4,5,6]
>>>numbers[0:1]
[1]
注意索引边界:第1个索引的元素包含在分片内,第2个索引的元素不在分片内,如果要索引最后一个元素
>>>numbers[-3:]
[8,9,10]
>>>print numbers[-1:]
[10]
这种方法同样适用于序列开始的元素:
>>>numbers[:3]
[1,2,3]
如果需要复制整个序列,可以将两个索引都置空:
>>>numbers[:]
[1,2,3,4,5,6,7,8,9,10]
我们还可以使用第三个参数设置分片的步长,下面代码为从numbers序列中选出从0到10,步长为2的元素
>>>numbers[0:10:2]
[1,3,5,7,9]
如果要将每4个元素中的第1个提取出来可以这样写
>>>numbers[::4]
[1,5,9]
步长为负数将向左提取元素,当使用负数作为步长时开始的点的索引必须大于结束点的索引
>>>number[8:3:-1]
[9,8,7,6,5]
>>>numbers[10:0:-2]
[10, 8, 6, 4, 2]
(3)序列相加
使用+运算符可以进行序列的连接操作:
>>>[1,2,3] + [4,5,6]
[1,2,3,4,5,6]
>>>'Hello, ' + 'world!'
'Hello, world!'
注意同种类型的序列才能连接到一起,列表和字符串是无法连接的。
(4)乘法
数字x乘以序列会生成新的序列。新序列中,原来的序列将被重复x次
>>>'pyhton' * 5
'pyhtonpyhtonpyhtonpyhtonpyhton'
>>>[42]*10
[42,42,42,42,42,42,42,42,42,42]
(5)None空列表和初始化
空列表可以通过两个中括号中间什么都不写表示[]
如果想创建一个占用 10个元素空间,却不包括任何有用内容的列表,可以用:
>>>[0]*10
None是一个Python的內建值,它的确切含义是这里什么都没有。
>>>[None]*10
(6)成员资格in
为了检查一个值是否在列表中,可以使用in运算符,返回布尔值真或假:
>>>permission = 'rw'
>>>'w' in permission
True
>>>'x' in permission
False
下面的例子,检查用户名和PIN码:
database = [
['albert', '1234'],
['dilbert','4242'],
['smith', '7524'],
['jones', '9843']
]
username = raw_input('User name: ')
pin = raw_input('PIN code: ')
if [username,pin] in database:
print 'Access granted'
运行结果:
User name: jones
PIN code: 9843
Access granted
(7)长度、最小值和最大值
內建函数len,min,max
>>>numbers[100,34,678]
>>>len(numbers)
3
>>>max(numbers)
678
>>>min(numbers)
34
>>>max(2,3)
3
>>>min(2,3,4,5)
2
3. 列表
(1)list函数
因为字符串不能像列表一样修改,所以有时候根据字符串创建列表很有用
>>>list('Hello')
['H','e','l','l','o']
list适用于所有类型的序列,而不只是列表。
(2)列表基本操作
元素赋值
>>>x=[1,1,1]
>>>x[1]=2
>>>x
[1,2,1]
删除元素
>>>x=[1,2,3]
>>>del x[1]
>>>x
[1,3]
(责任编辑:ioter)
python适合机器视觉_Python机器视觉编程常用数据结构与示例相关推荐
- Python机器视觉编程常用数据结构与示例
Python机器视觉编程常用数据结构与示例 本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容: 数据结构 通用序列操作:索引(indexing).分片(slic ...
- python编程语言模块_Python基础编程常用模块汇总
3.8 json模块重点 json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去. 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串.(比如Python的一个列 ...
- Python 基础(6)(常用数据结构)
https://www.toutiao.com/a6634514748694069763/ 2018-12-14 08:10:00 常用数据结构 1)元组 元组是一种静态的数据结构,无法修改,若要修改 ...
- python udp通信_Python网络编程(三)
回顾 在<Python进阶记录之网络编程(二)>中,我们介绍了UDP端口号的基本概念和作用以及Python中UDP服务端的端口绑定和简单创建.今天我们利用UDP server和UDP cl ...
- python高级应用_Python高级编程技巧
Python 高级编程技巧 本文展示一些高级的 Python 设计结构和它们的使用方法.在日常工作中,你可以根据需要 选择合适的数据结构, 例如对快速查找性的要求. 对数据一致性的要求或是对索引的要求 ...
- python高性能写法_python高性能编程方法一
阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. ...
- python npv 计算公式_Python numpy 中常用的数据运算
Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.--<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...
- python 线程同步_Python并发编程-线程同步(线程安全)
Python并发编程-线程同步(线程安全) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 线程同步,线程间协调,通过某种技术,让一个线程访问某些数据时,其它线程不能访问这些数据,直 ...
- python线程唤醒_Python 并发编程(一)之线程
常用用法 t.is_alive() Python中线程会在一个单独的系统级别线程中执行(比如一个POSIX线程或者一个Windows线程) 这些线程将由操作系统来全权管理.线程一旦启动,将独立执行直到 ...
最新文章
- 微软经典案例系列课程(视频课程讲师:杨丹)
- HttpWebResponse 的问题
- 哪里有mysql认证_国内哪个城市可以考mysql认证
- TableCache设置过小造成MyISAM频繁损坏
- 青岛市新添智能服务平台 借力大数据智慧城市再扩容
- 新华三(H3C)校园招聘技术类笔试题2019
- Web程序设计(第三版)课后答案
- 服务器python环境安装
- QQ群邮件批量群发源码
- 手机端Alook浏览器手动抓取京东Cookie教程
- UVA - 11604 General Sultan 题解
- 汽车自动变速器的控制技术
- 密码包含-数字、大小写、特殊字符-正则表达式
- 梦想世界 2014年8月14日服务器维护公告,《命运之轮》停止运营公告
- 基于单片机的计算器系统设计(#0404)
- C/C++段错误问题排查和解决方法
- 普氏分析法-MATLAB工具箱函数
- Windows系统禁止软件、驱动阻止系统息屏、睡眠。
- HTTP状态码含义:428、429、431、511431状态码详解
- 001-windows下安装go及IDE
热门文章
- 市场部和销售部的区别
- 在windows下安装webpy
- 香肠派对电脑版_香肠派对2020先行服最新内测版(众神降临)-香肠派对2020先行服游戏下载v9.82...
- 卢伟冰为Redmi K50电竞版预热:相机拍照效果越来越出色
- 董明珠的“接班人”出现了?22岁董明珠女秘书火了!本人回应...
- 大V怒怼银行服务太差,一怒取走500万现金!上海银行回应了
- 苹果 AirPods 固件更新,这个新功能上线!
- 新年首发成功!SpaceX“猎鹰9号”火箭发射升空
- 90万餐饮商家全店五折 支付宝首次以数字生活平台身份参加双11
- 真狠!10000mAh超大电池手机发布,真的神机...