浅谈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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
python正则中最短匹配实现代码
Jan 16 Python
Windows下python3.6.4安装教程
Jul 31 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
python异常处理之try finally不报错的原因
May 18 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
scrapy处理python爬虫调度详解
Nov 23 Python
Python中22个万用公式的小结
Jul 21 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中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
旅游管理本科生求职信
2013/10/14 职场文书
银行求职信怎么写
2014/05/26 职场文书
车间核算员岗位职责
2014/07/01 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
工作失职检讨书500字
2014/10/17 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js