import cv2
import numpy as np
import matplotlib.pyplot as plot
#Numpy 為Python中的重要模組,主要用於資料處理並能快速操作多重維度的陣列。
img = cv2.imread('C:\\Users\\azxa3\\Desktop\\1.jpg')
#讀取一張照片作練習的話,這邊建議絕對路徑,因相對路徑需要看您Spyder所在路徑而做決定。
如使用相對路徑,則須將圖片放入Spyder右上角所顯示之路徑資料夾內(或更改資料夾路徑至您圖片的資料夾內),方可使用。
#顯示圖片,第一個參數為視窗名稱,第二個參數為圖檔的變數名稱
cv2.imshow('windows name', img)
# 按下任意鍵則關閉所有視窗
#參數為等待時間(毫秒),設定0為持續等待使用者按下按鍵
cv2.waitKey(0)
#按下任意鍵後關閉所有Opencv視窗
cv2.destroyAllWindows()
很明顯地,這張圖片的尺寸於Size的位子(高度331×寬度363),而最後的3代表RGB 彩色圖片
第三個維度為3代表是RGB 彩色圖片,若為1則代表灰階圖片。
首先我們需要知道座標才知道該如何裁切,故我們使用matplotlib 來顯示。
如直接使用Plot來顯示會明顯出現問題,這是因為matplotlib使用的顏色模式是我們流行的RGB模式,而opencv使用的BGR模式。因此,在使用matplotlib顯示之前先要做一下圖像顏色的轉換。
# 將BGR圖像轉為RGB圖像並使用plot印出
cv_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plot.imshow(cv_rgb)
可明顯看出圖片變回正常了!!並可依照需求裁切,y軸為列,x軸為行,在此我們裁切[橫列:直行]為[80到270列,50到320行]
,達到看座標的目的後,可將圖片裁切後使用cv2.imshow印出
印出來後發現成功裁切出我們所需的結果!
# 將圖片裁切後印出
crop_img=img[80:270,50:320] #裁切圖片
cv2.imshow("cropped", crop_img) #show出來
cv2.waitKey(0)
可看出已經儲存於Spyder所設之路徑內,名稱為crop.jpg
# 寫入圖檔
cv2.imwrite('crop.jpg', crop_img)