1. 程式人生 > >Python-OpenCV基礎:影象的讀寫,尺寸和儲存

Python-OpenCV基礎:影象的讀寫,尺寸和儲存

為什麼使用Python-OpenCV

雖然python 很強大,而且也有自己的影象處理庫PIL,但是相對於OpenCV 來講,它還是弱小很多。跟很多開源軟體一樣OpenCV 也提供了完善的python 介面,非常便於呼叫。OpenCV 的穩定版是2.4.8,最新版是4.0,包含了超過2500 個演算法和函式,幾乎任何一個能想到的成熟演算法都可以通過呼叫OpenCV 的函式來實現,超級方便。

OpenCV的官方網站:

https://opencv.org/

一)工具

Python

Python 作為一種高效簡潔的直譯式語言非常適合我們用來解決日常工作的問題。而且它簡單易學,初學者幾個小時就可以基本入門。再加上Numpy 和matplotlib 這兩個翅膀,Python 對資料分析的能力不遜於Matlab。Python 還被稱為是膠水語言,有很多軟體都提供了Python 介面。尤其是在linux 下,可以使用Python 將不同的軟體組成一個工作流,發揮每一個軟體自己最大的優勢從而完成一個複雜的任務。比如我們可以使用Mysql 儲存資料,使用R 分析資料,使用matplotlib 展示資料,使用OpenGL 進行3D 建模,使用Qt 構建漂亮的GUI。而Python 可以將他們聯合在一起構建一個強大的工作流。

OpenCV

影象處理庫

二)影象的基本操作

讀取圖片,顯示尺寸

#讀圖片
img = cv2.imread("D:/Tmpfile/test1.jpg")  #根據路徑讀取影象
cv2.namedWindow("Image") #建立視窗
cv2.imshow("Image", img) #視窗顯示
cv2.waitKey (0) #如果不添最後一句,在IDLE中執行視窗直接無響應
cv2.destroyAllWindows()

print(img.shape) #顯示圖片大小

【注】

cv2.waitKey() 是一個鍵盤繫結函式。需要指出的是它的時間尺度是毫秒級。函式等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,如果按下任意鍵,這個函式會返回按鍵的ASCII 碼值,程式將會繼續執行。如果沒有鍵盤輸入,返回值為-1,如果我們設定這個函式的引數為0,那它將會無限期的等待鍵盤輸入。它也可以被用來檢測特定鍵是否被按下,例如按鍵a 是否被按下,這個後面我們會接著討論。

cv2.destroyAllWindows() 可以輕易刪除任何我們建立的視窗。如果 你想刪除特定的視窗可以使用cv2.destroyWindow(),在括號內輸入你想刪 除的視窗名。

寫圖片

import cv2
#imwrite(filename, img[, params]) -> retval
imgPath = 'E:/test01.jpg' #圖片的寫入路徑
#圖片寫入
cv2.imwrite(filename, img)
#第三個引數針對特定的格式: 
imgPath = 'E:/test01.jpg'
cv2.imwrite(imgPath, img, [int(cv2.IMWRITE_JPEG_QUALITY),100])
#對於JPEG,其表示的是影象的質量。
#用0-100的整數表示,數值越高質量越高,預設為95。
imgPath = 'E:/test01.png'
cv2.imwrite(imgPath, img, [int(cv2.IMWRITE_PNG_COMPRESSION),9]) 
#對於PNG,第三個引數表示的是壓縮級別。
#從0到9,壓縮級別越高,影象尺寸越小,預設級別為3。
#注意,cv2.IMWRITE_JPEG_QUALITY和cv2.IMWRITE_PNG_COMPRESSION型別為Long,必須轉換成int。

儲存圖片

cv2.imwrite('lena.png',img)

【參考】

https://blog.csdn.net/eddy_zheng/article/details/48286735

https://blog.csdn.net/sunny2038/article/details/9057415