影象處理行業專業級類庫OpenCV
阿新 • • 發佈:2019-01-10
前言
最近要通過opencv來進行人臉識別,不得不多學習學習opencv方面的知識,處理影象的類庫有很多,在python下操作主要有3種,OpenCV、Skimage(基本不用)和PIL,用的比較多的是PIL和OpenCV,而PIL是Python中最基礎的影象處理庫,opencv是非常強大的專門處理圖片的高效能類庫,包含了超過2500 個演算法和函式,幾乎任何一個能想到的成熟演算法都可以通過呼叫OpenCV 的函式來實現,超級方便。OpenCV安裝點選這裡
主要方法
- 讀取 cv2.imread()
- 顯示 cv2.imshow()
- 縮放 cv2.resize([,])
- 生成 cv2.imwrite()
點選cv2可以看到;
當然不僅僅只有這幾個,還有很多很多。
程式實現
###################################################################
# -*- coding:utf8 -*-
# created by tengxing on 2017.5.18
# mail [email protected]
# github github.com/tengxing
# description opencv讀取,縮放,生成圖片
####################################################################
import cv2
filename = "test.jpg"
##read image
img = cv2.imread(filename=filename)
print "height:%spx"%img.shape[0] # out: width:978px
print type(img) # out: <type 'numpy.ndarray'>
print img.size # out: 5304672
print img
#[[[ 4 4 4]
# ....
# [ 4 4 4]]]
## show image
image = cv2.imshow(winname="image" ,mat=img)
cv2.waitKey(0)
"""
cv2.waitKey() 是一個鍵盤繫結函式。函式等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,如果
按下任意鍵,這個函式會返回按鍵的ASCII 碼值,程式將會繼續執行。如果沒
有鍵盤輸入,返回值為-1,如果我們設定這個函式的引數為0,那它將會無限
期的等待鍵盤輸入。
"""
cv2.destroyWindow(image)
"""
cv2.destroyAllWindows() 可以輕易刪除任何我們建立的視窗。如果
你想刪除特定的視窗可以使用cv2.destroyWindow(),在括號內輸入你想刪
除的視窗名。
"""
## resize image
img = cv2.resize(img,(200,100),interpolation=None)
"""
interplolation為縮放時的插值方式,有三種插值方式:
cv2.INTER_AREA:使用象素關係重取樣。當影象縮小時候,該方法可以避免波紋出現。當影象放大時,類似於 CV_INTER_NN方法
cv2.INTER_CUBIC: 立方插值
cv2.INTER_LINEAR: 雙線形插值
cv2.INTER_NN: 最近鄰插值
"""
print img.shape # out: (100, 200, 3)
## rewrite image
cv2.imwrite('out.png',img)
結束語
我只想說,用opencv處理圖片確實很方便,並且opencv一直是圖片處理方向的領導型工具庫,值得一試。當然,本篇部落格中,我不得不說,顯示圖片有跟友好的庫 matpoltlib ,用來繪製圖表,顯示圖片。