將下面文檔存為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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!