用python進行OpenCV實戰之用OpenCV3實現圖片載入、顯示和儲存(argparse詳細解釋)


將下面文檔存為load_display_save.py

#-*- coding:utf-8 -*-
from __future__ import print_function #1
import argparse  #2
import cv2 #3

ap = argparse.ArgumentParser() #4
ap.add_argument("-i", "--image", required = True,
                help = "Path to the image") #5
args = vars(ap.parse_args()) #6

image1 = cv2.imread(args["image"]) #7
print("width: {}pixels".format(image1.shape[1])) #8
print("hight: {}pixels".format(image1.shape[0])) #9
print("channels: {}".format(image1.shape[2])) #10

cv2.imshow("恐龍啊", image1) #11
cv2.waitKey(0) #12
cv2.imwrite("恐龍圖片.jpg", image1) #13

詳細解釋

#1:
引入future包,以便於我們使用print(),而不是print,這會讓我們的程序在python2.7或者python3下都可以運行
#2:
引入argparse包,是為了在命令行中解析所輸入的命令
#3:
引入OpenCV庫
#4,5,6:
這三句程序主要是為了解析從命令行輸入的參數,簡單介紹一下argparse的用法,一般分為四步:

1 import argparse  #導包
2 parser = argparse.ArgumentParser() #創建ArgumentParser對象
3 parser.add_argument() #通過add_argument()告訴ArgumentParser如何將命令行中的參數轉化成所需要的對象
4 parser.parse_args() #存儲和使用通過add_argument()得到的信息,檢查命令行的參數,並將參數轉化成合理的使用類型

1.這第一個參數和第二個參數是什么意思呢?大家回想在命令行中輸入
python -h和輸入python –help是不是都可以得到關於python的幫助文檔呢,這里的第一個參數-i就可以看成是–image的簡寫形式。第二個參數是”–image”,這里的image同時也相當於聲明了一個變量,后面是會用到的,在#7就用到了。
2.第三個參數什么意思呢?意思你在命令輸入python load_display_save.py后面必須加上“-i”或者”–image”
3.第四個參數是幫助參數,就是解釋你這個python load_display_save.py -i后面跟的參數是什么,可以看懂在這后面應該跟圖片的路徑

1 args = vars(ap.parse_args()) #6

這里為什么要是用vars()呢?是為了能夠像字典一樣訪問 ap.parse_args()的值,即現在 args[“image”]=ap.parse_args()
關於argparse的更多內容可以訪問python官網:
官方解釋
官方使用教程

#7:
通過#6得到了圖片的路徑,現在通過OpenCV的imread()函數從路徑讀取圖片,cv2.imread()返回的是用numpy數組表示的圖片
#8,9,10:
輸出的分別是圖片的寬,高,和顏色通道的數量,其實image1.shape是一個三元組(高,寬,顏色通道),如果是黑白圖片的話則只是二元組(高,寬),要注意的是shape[0]是高,shape[1]是寬,及shape[0]是y,shape[1]是x,在圖像中的坐標系如下:

#11:
以名稱為”恐龍啊”將圖片顯示

#12:
cv2.waitKey()表示暫停腳本的執行直到在鍵盤輸入一個按鍵,用“0”作為可以使用任何按鍵作為繼續腳本執行的按鈕

#13:
通過腳本將剛才展示的圖片以名稱為”恐龍圖片.jpg”存儲在和腳本同樣的目錄之下,

執行

在終端輸入:

1 python load_display_save.py -i images/pic.png

得到結果 
結果展示
生成圖片

1 width: 528pixels
2 hight: 449pixels
3 channels: 3


作者:樓上小宇
來源:CSDN
原文:https://blog.csdn.net/u014265347/article/details/77334356
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM