浅谈Python 命令行参数argparse写入图片路径操作


Posted in Python onJuly 12, 2020

什么是命令行参数?

命令行参数是在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。

并非所有程序都有命令行参数,因为并非所有程序都需要它们。

为什么我们使用命令行参数?

如上所述,命令行参数在运行时为程序提供附加信息。

这允许我们在不改变代码的情况下动态地为我们的程序提供不同的输入 。

您可以绘制命令行参数类似于函数参数的类比。如果你知道如何在各种编程语言中声明和调用函数,那么当你发现如何使用命令行参数时,你会立刻感到宾至如归。

鉴于这是计算机视觉和图像处理博客,您在这里看到的很多参数都是图像路径或视频路径。

那么让我们创建一个名为shape_counter .py的新文件并开始编码:

浅谈Python 命令行参数argparse写入图片路径操作

我们在第2行导入 argparse - 这是帮助我们解析和访问命令行参数的包。

然后,在第7-12行,我们解析两个命令行参数。代码在这些行上非常易读,您可以看到如何格式化参数。

我们以 -input 参数为例。

在第7行,我们将ArgumentParser 对象实例化为 ap 。

然后在第8行和第9行我们添加我们的 - input 参数。我们必须指定速记和长版本( - i 和 - input ),其中任何一个标志都可以在命令行中使用。这是必需的参数,如 required = True所示。如上所示, 帮助字符串将在终端中提供附加信息。

类似地,在第10行和第11行,我们指定了 -input 参数,这也是必需的。

从那里我们使用路径加载图像。请记住,输入图像路径包含在 args [ “input” ]中 ,因此这是cv2的参数 imread 。

简单吧?

其余的行是特定于图像处理的——

在第18-20行,我们完成了三项操作:

将图像转换 为灰度。

模糊灰度图像。

阈值模糊图像。

我们准备找到并绘制形状轮廓:

浅谈Python 命令行参数argparse写入图片路径操作

在第23-25行,我们在阈值图像中找到形状轮廓 。

从那里,我们在输入图像上绘制轮廓(第28和29行)。

然后我们在图像上组装并放置文本(第32-34行)。文本包含形状的总数。

最后,我们利用我们的 -input 图像路径参数将图像写入到磁盘中的 cv2.imwrite (第37行)。

让我们用两个参数执行命令:

浅谈Python 命令行参数argparse写入图片路径操作

附完整代码

Codeblock #1: Lines 1-20# import the necessary packages
import argparse
import imutils
import cv2
 
# construct the argument parser and parse the arguments
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())
 
# load the input image from disk
image = cv2.imread(args["input"])
 
# convert the image to grayscale, blur it, and threshold it
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5,5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]
# extract contours from the image
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
	cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
 
# loop over the contours and draw them on the input image
for c in cnts:
	cv2.drawContours(image, [c], -1, (0, 0, 255), 2)
 
# display the total number of shapes on the image
text = "I found {} total shapes".format(len(cnts))
cv2.putText(image, text, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
		(0, 0, 255), 2)
 
# write the output image to disk
cv2.imwrite(args["output"], image)
$ python shape_counter.py --input input_01.png --output output_01.png

以上这篇浅谈Python 命令行参数argparse写入图片路径操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
更改Python命令行交互提示符的方法
Jan 14 Python
初步解析Python中的yield函数的用法
Apr 03 Python
python回调函数用法实例分析
May 09 Python
Python实现线程池代码分享
Jun 21 Python
python中偏函数partial用法实例分析
Jul 08 Python
python处理xml文件的方法小结
May 02 Python
Python复数属性和方法运算操作示例
Jul 21 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
python中os.path.join()函数实例用法
May 26 Python
Python实现封装打包自己写的代码,被python import
Jul 12 #Python
Django封装交互接口代码
Jul 12 #Python
在django中实现choices字段获取对应字段值
Jul 12 #Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 #Python
django美化后台django-suit的安装配置操作
Jul 12 #Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 #Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 #Python
You might like
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
php简单获取复选框值的方法
2016/05/11 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
PHP实现简单的计算器
2020/08/28 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
动态添加js事件实现代码
2009/03/12 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
详解jQuery中的事件
2016/12/14 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
js实现弹窗效果
2020/08/09 Javascript
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python实现udp传输图片功能
2020/03/20 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
小学毕业家长寄语
2014/01/19 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP