浅谈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每隔N秒运行指定函数的方法
Mar 16 Python
python使用自定义user-agent抓取网页的方法
Apr 15 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
python结合opencv实现人脸检测与跟踪
Jun 08 Python
基于python历史天气采集的分析
Feb 14 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Python二维码生成识别实例详解
Jul 16 Python
python tkinter图形界面代码统计工具
Sep 18 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
python plotly画柱状图代码实例
Dec 13 Python
基于Python正确读取资源文件
Sep 14 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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 session 预定义数组
2009/03/16 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python的Django框架中的数据库配置指南
2015/07/17 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
python 实现字符串下标的输出功能
2020/02/13 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
Python 日期与时间转换的方法
2020/08/01 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
程序员经常用到的UNIX命令
2015/04/13 面试题
检察官就职演讲稿
2014/01/13 职场文书
实习生自我评价
2014/01/18 职场文书
青春演讲稿范文
2014/05/08 职场文书
工作检讨书怎么写
2015/01/23 职场文书
教师自荐信范文
2015/03/06 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书