OpenCV教程1(python)

OpenCV教程1

OpenCV(python)安裝

工欲善其事必先利其器,因此學好OpenCV第一步是將相關的環境搭建起來。本教程是基於windows上的python3.X的,因此首先你得安裝了python3.X。沒有安裝的能夠去python官網下載對應的版本,雙擊點擊下一步,下一步,直至安裝成功。
python官網
好了,python安裝完了,下一步就是安裝OpenCV了。因OpenCV須要用到numpy庫,得先安裝numpy庫。win+R鍵輸入cmd進入控制檯黑窗口,輸入pip install numpy,回車。
控制檯黑窗口
接下來就是正式安裝OpenCV了,去Python Extension Packages這個網站,按ctrl+F進行搜索,輸入opencv,回車,找到了OpenCV對應的下載連接。
OpenCV下載連接
下載完成後,仍是在黑窗口,輸入pip install 你的路徑名\完整的文件名.whl 後回車,提示安裝成功了就好了。
下面的基礎教程是創建在你學習過python的狀況下,要否則會遇到不少問題。沒有學過python的,能夠去網上找一些基礎的教程來學習,只須要大體瞭解一下python的基本語法就能夠。python

OpenCV基礎操做-圖片

1.讀入並顯示圖片

import numpy as np
import cv2
img = cv2.imread(r'lighthouse.png',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

lighthouse.png連接
運行程序結果以下:
運行結果
解釋一下代碼,import numpy as npimport cv2是用來引入相應的模塊的,以便在程序中使用。windows

使用cv.imread() 讀入圖像,第一個參數是圖片的文件名,在不一樣的路徑中,須要加入路徑名。r'lighthouse.png'字符串前面的r表示字符串中取消全部的轉義。第二個參數表示如何讀取圖片,經常使用的有幾個值:
cv2.IMREAD_COLOR:讀入一副彩色圖像。圖像的透明度會被忽略,這是默認參數。
cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖像。
cv2.IMREAD_UNCHANGED:讀入一幅圖像,而且包括圖像的 alpha 通道。
返回值是一個包含圖片數據的np.array數組型,OpenCV中全部的圖片都是用np.array來表示的。
注意:圖片的路徑就算是錯的,OpenCV也不會提醒你的,只會返回None,這須要本身寫代碼時注意。數組

使用cv2.imshow 顯示圖片,第一個參數是顯示窗口的名字,在上面的運行結果中,能夠看到窗口名字爲'image'。第二個參數是要指向圖片數組的變量名。
這裏若是須要顯示多幅圖片,能夠爲每一個窗口指定不一樣的名字。若指定相同的名字,OpenCV只會用後面的去覆蓋前面的圖片。
特殊的狀況,你能夠用cv2.namedWindow()先建立一個窗口。第一個 參數爲窗口名字,第二個參數經常使用的能夠取:
cv2.WINDOW_AUTOSIZE:默認的,窗口大小根據圖片的大小,但窗口的大小不能夠改變。
cv2.WINDOW_NORMAL:窗口大小能夠改變。bash

import numpy as np
import cv2
img = cv2.imread(r'lighthouse.png',cv2.IMREAD_COLOR)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() 是一個鍵盤綁定函數。須要指出的是它的時間尺度是毫秒級。函數等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒以內,若是按下任意鍵,這個函數會返回按鍵的 ASCII 碼值,程序將會繼續運行。若是沒有鍵盤輸入,返回值爲 -1,若是咱們設置這個函數的參數爲 0,那它將會無限期的等待鍵盤輸入。
cv2.destroyAllWindows() 能夠輕易刪除任何咱們創建的窗口。若是你想刪除特定的窗口可使用 cv2.destroyWindow(),參數是你想刪除的窗口名。函數

保存圖片

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

其中cv2.imwrite() 第一個參數是你想使用的文件名,OpenCV支持大多數的圖片文件格式,不用太擔憂圖片格式不支持。第二個參數是你想要保存的圖片。學習

總結

下面用一個例子來綜合運用上述知識網站

import numpy as np
import cv2
img = cv2.imread(r'office_5.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: #27爲'ESC'鍵的ASCII碼值
    cv2.destroyAllWindows()
elif k == ord('s'): #ord()函數是獲取單個字符的ASCII碼值
    cv2.imwrite(r'office.jpg',img)
    cv2.destroyAllWindows()

office_5.jpg連接url

下一節咱們介紹一下OpenCV操做視頻。spa

相關文章
相關標籤/搜索