作者|Lazar Gugleta
編譯|Flin
來源|towardsdatascience
計算機視覺和計算機圖形學現在非常流行,因為它們與人工智能有著廣泛的聯系,它們的主要共同點是使用同一個OpenCV庫,以便像人類一樣對數字影像或視頻(CV)或生成影像(CG)有高層次理解,
這就是為什么今天我們要看一看在計算機科學領域里,對于同樣的庫,有哪些函式是你最能從中受益的!

在討論OpenCV的強大功能之前,讓我們先看看計算機視覺、計算機圖形學和OpenCV的定義,以便更好地理解我們在這里所做的作業,
計算機視覺
計算機視覺是一個跨學科的領域,涉及如何使計算機獲得對數字影像或視頻的高層次理解,從工程的角度來看,它試圖使人類視覺系統能夠完成的任務自動化,也就是說,它希望像人類一樣“看懂”世界,
計算機圖形學
計算機圖形學是計算機科學中的一個分支,它研究如何借助計算機生成影像,如今,計算機圖形學是數字攝影、電影、視頻游戲、手機和計算機顯示等許多專業應用領域的核心技術,
OpenCV
OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟體庫,OpenCV的建立是為了為計算機視覺應用提供一個通用的基礎設施,并加速機器感知在商業產品中的應用,
該圖書館提供處理和分析影像內容的工具,包括識別數字照片中的物件(如人的臉和圖形、文本等)、跟蹤物件的運動、轉換影像、應用機器學習方法以及識別各種影像中的公共元素,
一旦我們解決了這個問題,我們可以從我個人選擇的十大函式開始,(使用Python撰寫函式)

imread/imshow
這個函式必須放在首位,因為要用一張圖片開始你的專案,此函式是必不可少的,從函式名可以猜到,它加載了BGR(Blue-Green-Red)格式的影像,
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的區域間重采樣,還有更多類似的方法
- INTER_NEAREST: 最近鄰插值
- INTER_LINEAR: 雙線性插值
- INTER_CUBIC: 4×4像素鄰域上的雙三次插值
- INTER_LANCZOS4: 8×8鄰域上的Lanczos插值
- https://scc.ustc.edu.cn/zlsc/sugon/intel/ipp/ipp_manual/IPPI/ippi_appendices/ippi_appB_LanczosInterpolation.htm

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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/143259.html
標籤:其他
