每一个人都应该知道的十大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/