Python必备基本技能——命令行参数args详解

Posted 程序媛一枚~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python必备基本技能——命令行参数args详解相关的知识,希望对你有一定的参考价值。

Python必备基本技能——命令行参数args详解

这篇博客将介绍一项开发人员、工程师和计算机科学家必备的技能——命令行参数(原理及使用)。 依赖

pip install argparse

vars会将命令行参数解析成字典,argparse Python 库在解析过程中用下划线替换破折号(若命令行参数中有中划线 “-” 需要用下划线 “_” 解析。)

1. 效果图

命令行参数有默认值,无默认值,必须,有中划线-效果图如下:
在这里插入图片描述

寻找轮廓效果图如下:
在这里插入图片描述

2. 源码

2.1 简单命令行参数

# USAGE
# python simple_example.py -n Lucy --features-db feat.db
# python simple_example.py --name Lucy --features-db feat.db -i ml2.jpg

# 导入必要的包
import argparse

# 构建命令行参数及解析
# --image 名称
ap = argparse.ArgumentParser()  # 实例化对象
# -n 简短
# --name 全称
# required 必须与否,非必需,可给定默认值
# help 提示语,终端的附加信息

# --features-db 命令行参数标志中有一个“-”(破折号),但在获取参数包含的值时,需要使用“_”(下划线),
# 这是因为argparse Python 库在解析过程中用下划线替换破折号。
ap.add_argument("-n", "--name", required=True,
                help="name of the user")
ap.add_argument("-f", "--features-db", required=True, help="Path to the features database")
ap.add_argument("-i", "--image", required=False, default="ml.jpg", help="Path to the image")

# 在对象上将解析的命令行参数转换为 Python 字典,其中字典的键是命令行参数的名称,值是为命令行参数提供的字典的值。
args = vars(ap.parse_args())

# 给用户输出一行友好的问好
print("Hi there {}, it's nice to meet you!".format(args["name"]))

# 注意,这里有一个陷阱,入参: "--features-db",但解析时用_代替-;
print(args['features_db'])
print(args['image'])

2.1 轮廓检测源代码

轮廓的原始图可以参考:使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头)制作;

# USAGE
# python shape_counter.py --input arrow.png --output output_01.png

# 导入必要的包
import argparse
import imutils
import cv2

# 构建命令行参数及解析
# --input 输入图像路径
# --output 输出图像路径
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,
                help="path to input image")
ap.add_argument("-o", "--output", required=True,
                help="path to output image")
args = vars(ap.parse_args())

# 从磁盘加载输入图像
image = cv2.imread(args["input"])

# 转换灰度图,高斯平滑,阈值化图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]
cv2.imshow("thresh",thresh)
cv2.waitKey(0)

# 从图像提取轮廓
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
                        cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)

# 遍历输入图像的轮廓,并绘制
for c in cnts:
    # 绘制为紫色
    cv2.drawContours(image, [c], -1, (240, 32, 160), 2)

# 绘制文本显示轮廓总数
text = "I found {} total shapes".format(len(cnts))
cv2.putText(image, text, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
            (0, 0, 255), 2)

# 输出图像写入到磁盘
cv2.imwrite(args["output"], image)
cv2.imshow(str(args["output"]),image)
cv2.waitKey(0)

参考

以上是关于Python必备基本技能——命令行参数args详解的主要内容,如果未能解决你的问题,请参考以下文章

Python 命令行参数和getopt模块详解

python argparse详解

python:argparse命令行解析模块详解

Git远程操作详解(新手必备)

想做一个Python工程师,都有哪些技能是必备的?

[Python从零到壹] 十.Selenium爬取在线百科知识万字详解(NLP语料构造必备技能)