在OpenCV里实现命令行参数输入

不羁的心 提交于 2019-12-06 17:35:51

有时候需要提供一个程序给另外一个程序调用,方法有很多,比如使用模块的方式,比如使用库的方式,但也可以采用命令行的方式,这样还可以独立地运行和开发。采用命令行的方式,那么就需要对命令行参数进行识别,这里就来实现相关的参数的识别功能。首先导入库:

import argparse

接着创建argparse.ArgumentParser()对象,然后调用add_argument来添加参数,最后parse_args()来分析参数输入。例子演示如下:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import argparse
import cv2

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True,help = "Path to the image")
args = vars(ap.parse_args())

image = cv2.imread(args["image"])
print("width: {} pixels".format(image.shape[1]))
print("height: {} pixels".format(image.shape[0]))
print("channels: {}".format(image.shape[2]))

cv2.imshow("Image", image)
cv2.waitKey(0)

 

结果输出如下:

D:\>python Second30_arg1.py -i szsj.jpg

width: 1920 pixels

height: 1080 pixels

channels: 3

 

使用的模块步骤如下:

1、导入argparse模块

 

2、创建解析器对象ArgumentParser,可以添加参数。

 

description:描述程序

 

parser=argparse.ArgumentParser(description="This is a example program ")

 

add_help:默认是True,可以设置False禁用

 

3、add_argument()方法,用来指定程序需要接受的命令参数

 

定位参数:

 

parser.add_argument("echo",help="echo the string")

 

可选参数:

 

parser.add_argument("--verbosity", help="increase output verbosity")

 

在执行程序的时候,定位参数必选,可选参数可选。

 

add_argument()常用的参数:

 

dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数

 

default:设置参数的默认值

 

action:参数出发的动作

 

store:保存参数,默认

 

store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。

 

store_ture/store_false:保存相应的布尔值

 

append:将值保存在一个列表中。

 

append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。

 

count:参数出现的次数

 

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

 

version:打印程序版本信息

 

type:把从命令行输入的结果转成设置的类型

 

choice:允许的参数值

 

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

 

help:参数命令的介绍

 

玩转人工智能库-深入浅出OpenCV
https://edu.csdn.net/course/detail/26616

 

Python游戏开发入门

http://edu.csdn.net/course/detail/5690
 

你也能动手修改C编译器

http://edu.csdn.net/course/detail/5582

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!