浅谈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 urlopen()函数 示例分享
Jun 12 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
谈谈如何手动释放Python的内存
Dec 17 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
基于Python log 的正确打开方式
Apr 28 Python
Python实现决策树C4.5算法的示例
May 30 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
python turtle库画一个方格和圆实例
Jun 27 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python有参函数使用代码实例
Jan 06 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 动态执行带有参数的类方法
2009/04/10 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
javascript demo 基本技巧
2009/12/18 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
群众路线党员个人整改措施
2014/10/27 职场文书
小班上学期个人总结
2015/02/12 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
尼克胡哲观后感
2015/06/08 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
行为规范主题班会
2015/08/13 职场文书