这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 企业专区» OpenVINO生态社区» 【原创】项目实战—CreditCard数字识别(十一)

共1条 1/1 1 跳转至

【原创】项目实战—CreditCard数字识别(十一)

高工
2020-09-01 21:16:21 打赏

项目实战—Credit Card数字识别

之前在进阶篇我们已经讨论过OpenCV的模板匹配,本次我们可以将其用于Credit Card数字识别,当然这是最简单的也是最直接的方法,后面我们也会介绍到OCR识别,但本次我们暂不涉及。

准备工作

argparse用法

使用argparse模块创建一个ArgumentParser解析对象,可以理解成一个容器,将包含将命令行解析为Python数据类型所需的所有信息。parse_args()是将之前add_argument()定义的参数进行赋值,并返回相关的namespace

import argparse parser = argparse.ArgumentParser() # # 括号少了会报错AttributeError: 'str' object has no attribute 'prefix_chars' parser.add_argument("-i", "--image", required=True, help="path to input image") # -i可以理解为标签,--image既可以是标签又是属性 parser.add_argument("-t", "--template", required=True, help="path to template OCR-A image") args = vars(parser.parse_args()) # print(args["image"]) # args为字典{'image': 'images/credit_card_01.png', 'template': 'images/ocr_a_reference.png'} args = parser.parse_args() # print(args.image) # Namespace(image='images/credit_card_01.png', template='images/ocr_a_reference.png')

# -t--train两种情况,在bat文件和pycharm配置种注意区分前面的两个--还是一个-

pycharm下可以通过argparse模块完成参数设置,即生成全局变量。

image.png

zipzip*用法

zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。(个人理解,将两组元素,分别各成元元组组合成一个列表)

zip方法在Python 2Python 3中的不同:在Python 3.x中为了减少内存,zip()返回的是一个对象。如需展示列表,需手动list()转换。

sorted用法

基础用法:

传进去一个可迭代的数据,返回一个新的列表,按照从小到大排序,注意,是新的列表!

a = [1, 4, 6, 8, 9, 3, 5] b = "aghdb" sorted(a) # print(a)不变,返回sorted(g)变; [1, 3, 4, 5, 6, 8, 9] sorted(b) # 返回['a', 'b', 'd', 'g', 'h'] sorted(a, reverse=True) # 逆序排序; [9, 8, 6, 5, 4, 3, 1]

高级用法:

列表里面的每一个元素都为二维元组,key参数传入了一个lambda函数表达式,其x就代表列表里的每一个元素,然后分别利用索引返回元素内的第一个和第二个元素,这就代表了sorted()函数根据哪一个元素进行排列。reverse参数起逆排的作用,默认为False,从小到大顺序。

c = [("a", 1), ("e", 2), ("c", 4)] print(sorted(c, key=lambda x: x[0])) print(sorted(c, key=lambda x: x[1])) print(sorted(c, key=lambda x: x[0], reverse=True))

items()用法

D.items()

Python字典items()方法,以列表形式返回可遍历的(,)元组数组,(并非直接的列表,若要返回列表值还需调用list函数)。

D = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'} print(D.items()) print(list(D.items())) # 遍历字典列表 for key, value in D.items(): print(key, value) # dict_items([('Google', 'www.google.com'), ('Runoob', 'www.runoob.com'), ('taobao', 'www.taobao.com')]) # [('Google', 'www.google.com'), ('Runoob', 'www.runoob.com'), ('taobao', 'www.taobao.com')] # Google www.google.com Runoob www.runoob.com taobao www.taobao.com

join()用法

join()方法——用于将序列中的元素以指定的字符连接生成一个新的字符串

join()方法语法:str.join(sequence)sequence为要连接的元素序列。

str = "-" seq = ("a", "b", "c") # 字符串序列 # c = [1, 2, 3] 数字不行,变成# c = ["1", "2", "3"] print(str.join(seq)) # 输出结果为a-b-c # print("-".join(seq)) 直接这样写也行 # print(“”.join(seq)) 输出结果为abc

extend()用法

extend()函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

extend()方法语法:list.extend(seq)

a = [1, "a", "ad", "fd"] b = ["d", "d", "d"] a.extend(b) # 注意这个函数没有返回值,直接在a上面变化。 print(a) a1 = [] a1.extend(a) print(a1)

format用法

一种格式化字符串的函数str.format()

format函数可以接受不限个参数,位置可以不按顺序。

print("hello:{}{}".format("111", "222")) # hello:111222 print("hello:{1}{0}".format("111", "222")) # hello:222111可以改变顺序 print("hello:{name},{age}".format(name="111", age="222")) # hello:111,222可以设置参数 print("{:.2f}".format(3.123222)) # 3.12

接下来为OpenCV的准备工作,我们将其与实战部分放在一起。


对计算机视觉感兴趣?这个社区推荐给你~

>>点击了解OpenVINO生态开发社区



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]