每一個人都應該知道的十大OpenCV函數

做者|Lazar Gugleta
編譯|Flin
來源|towardsdatasciencepython

計算機視覺和計算機圖形學如今很是流行,由於它們與人工智能有着普遍的聯繫,它們的主要共同點是使用同一個OpenCV庫,以便像人類同樣對數字圖像或視頻(CV)或生成圖像(CG)有高層次理解。app

這就是爲何今天咱們要看一看在計算機科學領域裏,對於一樣的庫,有哪些函數是你最能從中受益的!機器學習

在討論OpenCV的強大功能以前,讓咱們先看看計算機視覺、計算機圖形學和OpenCV的定義,以便更好地理解咱們在這裏所作的工做。函數

計算機視覺

計算機視覺是一個跨學科的領域,涉及如何使計算機得到對數字圖像或視頻的高層次理解。從工程的角度來看,它試圖令人類視覺系統可以完成的任務自動化,也就是說,它但願像人類同樣「看懂」世界。工具

計算機圖形學

計算機圖形學是計算機科學中的一個分支,它研究如何藉助計算機生成圖像。現在,計算機圖形學是數字攝影、電影、視頻遊戲、手機和計算機顯示等許多專業應用領域的核心技術。學習

OpenCV

OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV的創建是爲了爲計算機視覺應用提供一個通用的基礎設施,並加速機器感知在商業產品中的應用。ui

該圖書館提供處理和分析圖像內容的工具,包括識別數字照片中的對象(如人的臉和圖形、文本等)、跟蹤對象的運動、轉換圖像、應用機器學習方法以及識別各類圖像中的公共元素。人工智能

一旦咱們解決了這個問題,咱們能夠從我我的選擇的十大函數開始。(使用Python編寫函數).net

imread/imshow

這個函數必須放在首位,由於要用一張圖片開始你的項目,此函數是必不可少的。從函數名能夠猜到,它加載了BGR(Blue-Green-Red)格式的圖像。3d

import cv2
import matplotlib.pyplot as plot
image = cv2.imread('data.png') #load image
plot.imshow(image) #show image

cvtColor

加載圖像後,還可使用cvtColor中的不一樣標誌將其轉換爲不一樣的配色方案。

cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

下面是cvtColor的一些其餘標誌:COLOR_BGR2GRAY、COLOR_BGR2HSV和COLOR_BGR2YUV等。

這是雙向的,例如,COLOR_YUV2BGR也是可能的。

resize

有時你只須要一個不一樣於原來大小的圖像,因此resize就是你須要的函數。

cv2.resize(image, dimension, interpolation = cv2.INTER_AREA)

它獲取原始圖像,並按尺寸建立一個新圖像。尺寸定義爲:

dimension = (width, height)

插值是一種重採樣圖片的方法,在個人例子中,它使用基於INTER_AREA的區域間重採樣,還有更多相似的方法

  1. INTER_NEAREST: 最近鄰插值
  2. INTER_LINEAR: 雙線性插值
  3. INTER_CUBIC: 4×4像素鄰域上的雙三次插值
  4. INTER_LANCZOS4: 8×8鄰域上的Lanczos插值

split/merge

每張圖片有3個通道,若是咱們想把它們分割成不一樣的圖片,咱們可使用分割函數來實現。

(channel_b, channel_g, channel_r) = cv2.split(img)

若是圖像是BGR格式,它會將每一個通道分紅你定義的三個變量。

若是你已經分割通道,但但願將它們合併到一塊兒,你可使用merge。

cv2.merge(channel_b, channel_g, channel_r)

vconcat / hconcat

使用vconcat()hconcat()垂直和水平鏈接(合併)圖像。

v表示垂直,h表示水平。

cv2.vconcat([image1, image2])
cv2.hconcat([image1, image2])

ones/zeros

若是要在三維圖像(矩陣)中都填充1或0(由於矩陣要求彩色圖像具備3個維度)。

size = 200, 200, 3
m = np.zeros(size, dtype=np.uint8)
n = np.ones(size, dtype=np.uint8)

做爲一個附加函數,我想在這裏添加一個東西,那就是轉置函數。

transpose

若是咱們有一個要轉置的已定義矩陣mat,咱們所要作的就是直接對mat使用這個函數:

import numpy as np  
mat = np.array([[1, 2, 3], [4, 5, 6]])  
mat_transpose = mat.transpose()
print(mat_tranpose)

獲得輸出:

[[1 4]  
 [2 5]  
 [3 6]]
#original input
[[1, 2, 3]
 [4, 5, 6]]

下一個步驟

這主要是爲初學者準備的,可是下節課咱們將介紹OpenCV更高級的特性。

原文連接:https://towardsdatascience.com/top-10-opencv-functions-everyone-has-to-know-about-945f33de8f6f

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索