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详解的主要内容,如果未能解决你的问题,请参考以下文章