浅谈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实现爬虫下载漫画示例
Feb 16 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python科学计算之Pandas详解
Jan 15 Python
Scrapy的简单使用教程
Oct 24 Python
python线程池threadpool使用篇
Apr 27 Python
使用Scrapy爬取动态数据
Oct 21 Python
Python 硬币兑换问题
Jul 29 Python
python中栈的原理及实现方法示例
Nov 27 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
Python使用xpath实现图片爬取
Sep 16 Python
python区块链实现简版工作量证明
May 25 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
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
三个python爬虫项目实例代码
2019/12/28 Python
请说出几个常用的异常类
2013/01/08 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
市场营销管理制度
2014/01/29 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
先进典型发言材料
2014/12/30 职场文书
欢迎词范文
2015/01/27 职场文书
安阳殷墟导游词
2015/02/10 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
oracle索引总结
2021/09/25 Oracle
JavaScript实现优先级队列
2021/12/06 Javascript
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL