浅谈Python 命令行参数argparse写入图片路径操作
作者:IG.xiaoyu 发布时间:2023-03-18 21:08:11
什么是命令行参数?
命令行参数是在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。
并非所有程序都有命令行参数,因为并非所有程序都需要它们。
为什么我们使用命令行参数?
如上所述,命令行参数在运行时为程序提供附加信息。
这允许我们在不改变代码的情况下动态地为我们的程序提供不同的输入 。
您可以绘制命令行参数类似于函数参数的类比。如果你知道如何在各种编程语言中声明和调用函数,那么当你发现如何使用命令行参数时,你会立刻感到宾至如归。
鉴于这是计算机视觉和图像处理博客,您在这里看到的很多参数都是图像路径或视频路径。
那么让我们创建一个名为shape_counter .py的新文件并开始编码:
我们在第2行导入 argparse - 这是帮助我们解析和访问命令行参数的包。
然后,在第7-12行,我们解析两个命令行参数。代码在这些行上非常易读,您可以看到如何格式化参数。
我们以 -input 参数为例。
在第7行,我们将ArgumentParser 对象实例化为 ap 。
然后在第8行和第9行我们添加我们的 - input 参数。我们必须指定速记和长版本( - i 和 - input ),其中任何一个标志都可以在命令行中使用。这是必需的参数,如 required = True所示。如上所示, 帮助字符串将在终端中提供附加信息。
类似地,在第10行和第11行,我们指定了 -input 参数,这也是必需的。
从那里我们使用路径加载图像。请记住,输入图像路径包含在 args [ “input” ]中 ,因此这是cv2的参数 imread 。
简单吧?
其余的行是特定于图像处理的——
在第18-20行,我们完成了三项操作:
将图像转换 为灰度。
模糊灰度图像。
阈值模糊图像。
我们准备找到并绘制形状轮廓:
在第23-25行,我们在阈值图像中找到形状轮廓 。
从那里,我们在输入图像上绘制轮廓(第28和29行)。
然后我们在图像上组装并放置文本(第32-34行)。文本包含形状的总数。
最后,我们利用我们的 -input 图像路径参数将图像写入到磁盘中的 cv2.imwrite (第37行)。
让我们用两个参数执行命令:
附完整代码
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
来源:https://blog.csdn.net/lixiaoyu101/article/details/84139774


猜你喜欢
- 什么是闭包:闭包是一个存在内部函数的引用关系。该引用指向的是外部函数的局部变量对象(前提是内部函数使用了外部函数的局部变量)闭包的作用:延长
- 前言新手程序员大概有如下特点if嵌套经常超过3层、经常出现重复代码、单个函数代码特别长。只会crud,对语言特性和语言的边界不了解。不懂面向
- 👀前言代码出现异常而报错再正常不过了,但为什么要处理异常?由于异常的存在,代码运行时会出现一大堆的红色字体提示,对于程序员还好,见红色报错见
- 本文实例讲述了Python实现OpenCV的安装与使用。分享给大家供大家参考,具体如下:由于下一步要开始研究下深度学习,而深度学习领域很多的
- Pytorch的核心是两个主要特征:1.一个n维tensor,类似于numpy,但是tensor可以在GPU上运行2.搭建和训练神经网络时的
- JavaScript封装弹框插件的具体代码,供大家参考,具体内容如下知识点1、document.querySelector() 方法quer
- 代码如下:CREATE TABLE #tmptb(tbname sysname,tbrows int ,tbREserved varchar
- 一、下载PyCharm下载最新版PyCharm,官方地址:https://www.jetbrains.com/pycharm/downloa
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- 再之前同时安装 python 后 只需把环境变量PATH 里面改为PATH=C:\Python36-32\Scripts\;C:\Pytho
- 一、前期准备1.设置GPUimport torchfrom torch import nnimport torchvisionfrom to
- 今天刚接触python,查看了一些环境建立的文章,可能是年代久远很多都不适用,现在mac搭建python环境变得更简单。大神勿喷。首先去py
- 测试代码1:def test(self): data = {"add": {"doc":
- 1、构建合理的HTTP请求标头。HTTP的请求头是一组属性和配置信息,当您发送一个请求到网络服务器时。因为浏览器和Python爬虫发送的请求
- throttle我们这里说的throttle就是函数节流的意思。再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制。主要应用的场
- python中字符串数组如何逆序排列?下面给大家介绍几种方法:1、数组倒序:原始元素的倒序排列(1)切片>>> arr =
- 由于Oracle自身比较复杂,在Linux环境下安装要涉及很多方面的因素。本文分两个方面介绍在Linux RedHat 6.0环境下Orac
- 一、前言最近做web网站的测试,遇到很多需要批量造数据的功能;比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不
- 本文实例讲述了C# Ado.net读取SQLServer数据库存储过程列表及参数信息的方法。分享给大家供大家参考,具体如下:得到数据库存储过
- []*int是一个指向指针的切片,本质上是切片,只不过切片里面存放的元素是指针;*[]int是一个指向切片的指针,本质上是指针,可以用*来获