淺談Python 命令行參數(shù)argparse寫入圖片路徑操作
什么是命令行參數(shù)?
命令行參數(shù)是在運(yùn)行時(shí)給予程序/腳本的標(biāo)志。它們包含我們程序的附加信息,以便它可以執(zhí)行。
并非所有程序都有命令行參數(shù),因?yàn)椴⒎撬谐绦蚨夹枰鼈儭?/p>
為什么我們使用命令行參數(shù)?
如上所述,命令行參數(shù)在運(yùn)行時(shí)為程序提供附加信息。
這允許我們?cè)诓桓淖兇a的情況下動(dòng)態(tài)地為我們的程序提供不同的輸入 。
您可以繪制命令行參數(shù)類似于函數(shù)參數(shù)的類比。如果你知道如何在各種編程語言中聲明和調(diào)用函數(shù),那么當(dāng)你發(fā)現(xiàn)如何使用命令行參數(shù)時(shí),你會(huì)立刻感到賓至如歸。
鑒于這是計(jì)算機(jī)視覺和圖像處理博客,您在這里看到的很多參數(shù)都是圖像路徑或視頻路徑。
那么讓我們創(chuàng)建一個(gè)名為shape_counter .py的新文件并開始編碼:
我們?cè)诘?行導(dǎo)入 argparse - 這是幫助我們解析和訪問命令行參數(shù)的包。
然后,在第7-12行,我們解析兩個(gè)命令行參數(shù)。代碼在這些行上非常易讀,您可以看到如何格式化參數(shù)。
我們以 -input 參數(shù)為例。
在第7行,我們將ArgumentParser 對(duì)象實(shí)例化為 ap 。
然后在第8行和第9行我們添加我們的 - input 參數(shù)。我們必須指定速記和長版本( - i 和 - input ),其中任何一個(gè)標(biāo)志都可以在命令行中使用。這是必需的參數(shù),如 required = True所示。如上所示, 幫助字符串將在終端中提供附加信息。
類似地,在第10行和第11行,我們指定了 -input 參數(shù),這也是必需的。
從那里我們使用路徑加載圖像。請(qǐng)記住,輸入圖像路徑包含在 args [ “input” ]中 ,因此這是cv2的參數(shù) imread 。
簡單吧?
其余的行是特定于圖像處理的——
在第18-20行,我們完成了三項(xiàng)操作:
將圖像轉(zhuǎn)換 為灰度。
模糊灰度圖像。
閾值模糊圖像。
我們準(zhǔn)備找到并繪制形狀輪廓:
在第23-25行,我們?cè)陂撝祱D像中找到形狀輪廓 。
從那里,我們?cè)谳斎雸D像上繪制輪廓(第28和29行)。
然后我們?cè)趫D像上組裝并放置文本(第32-34行)。文本包含形狀的總數(shù)。
最后,我們利用我們的 -input 圖像路徑參數(shù)將圖像寫入到磁盤中的 cv2.imwrite (第37行)。
讓我們用兩個(gè)參數(shù)執(zhí)行命令:
附完整代碼
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 命令行參數(shù)argparse寫入圖片路徑操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 字典與字符串的互轉(zhuǎn)實(shí)例
下面小編就為大家?guī)硪黄狿ython 字典與字符串的互轉(zhuǎn)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01Python3.5.3下配置opencv3.2.0的操作方法
下面小編就為大家分享一篇Python3.5.3下配置opencv3.2.0的操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04用pushplus+python監(jiān)控亞馬遜到貨動(dòng)態(tài)推送微信
這篇文章主要介紹了用pushplus+python監(jiān)控亞馬遜到貨動(dòng)態(tài)推送微信的示例,幫助大家利用python搶購商品,感興趣的朋友可以了解下2021-01-01python實(shí)現(xiàn)時(shí)間序列自相關(guān)圖(acf)、偏自相關(guān)圖(pacf)教程
這篇文章主要介紹了python實(shí)現(xiàn)時(shí)間序列自相關(guān)圖(acf)、偏自相關(guān)圖(pacf)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06python實(shí)現(xiàn)的web監(jiān)控系統(tǒng)
這篇文章主要介紹了python實(shí)現(xiàn)的web監(jiān)控系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04Flask框架debug與配置項(xiàng)的開啟與設(shè)置詳解
這篇文章主要介紹了Flask框架debug與配置項(xiàng)的開啟與設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09解決python super()調(diào)用多重繼承函數(shù)的問題
今天小編就為大家分享一篇解決python super()調(diào)用多重繼承函數(shù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06