乐趣区

关于人工智能:每个人都应该知道的十大OpenCV函数

作者 |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 的区域间重采样,还有更多相似的办法

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

    • https://scc.ustc.edu.cn/zlsc/…

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.co…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

退出移动版