作者 | Lazar Gugleta

译者 | Arvin,责编 | 夕颜

头图 | CSDN付费下载自视觉中国

出品 | CSDN(ID:CSDNnews)

计算机视觉和计算机图形学现在非常流行,因为它们与人工智能息息相关,它们主要的共同点是使用同一个OpenCV库,以理解数字图像或视频(CV)或生成图像(CG)中深层含义。

             

这就是为什么我们今天要分析为计算机科学众多重要领域提供动力的OpenCV库,找出对我们有用的重要函数!

在介绍OpenCV的强大功能之前,让我们看一下计算机视觉、计算机图形学和OpenCV的定义,以更好地了解我们今天的内容。

计算机视觉

计算机视觉是一个跨学科领域,研究如何使计算机获得对数字图像或视频的高级理解。从工程学的角度来看,它试图将人类视觉系统能够完成的任务实现自动化。

计算机图形学

计算机图形学是计算机科学的一个分支,致力于借助计算机生成图像。如今,计算机图形学已成为数字摄影,电影,视频游戏,手机和计算机显示器以及许多专用应用程序中的核心技术。

OpenCV

OpenCV(开源计算机视觉库,Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV的构建旨在为计算机视觉应用程序提供一个通用的基础结构,并加速机器感知在商业产品中的使用。

该库提供了用于处理和分析图像内容的工具,包括识别数码照片中的对象(例如人脸和人物,文本等),跟踪对象的运动,转换图像,应用机器学习方法以及识别各种图像中的共同元素。

       

解决了上述问题,就可以开始介绍我选出的十大函数了。(以下使用Python编写函数代码)

1. imread / imshow

 

这个功能必须是第一位的,因为它是项目中读取图像必不可少的函数。从函数的名称可以猜到,它以BGR(蓝绿红)格式加载图像。

import cv2
import matplotlib.pyplot as plot


image = cv2.imread('data.png') #load image
plot.imshow(image) #show image

 

    

2. cvtColor

 

加载图像后,还可以使用cvtColor中的不同标志将其转换为不同的配色方案。

cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

以下是cvtColor的一些其他标志:COLOR_BGR2GRAY、COLOR_BGR2HSV和COLOR_BGR2YUV,等等。       

      

这些标志都是双向的,所以COLOR_YUV2BGR也是可以的。

 

3. 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插值

 

             

4. split/merge

 

每张图片都有3个通道,如果我们想将它们分割成单独的图像,可以使用分割函数来实现。

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

 

如果图像是BGR格式,它将把每个通道分成你定义的那三个变量。

在拆分通道之后,如果想将它们合并回去,可以使用merge

cv2.merge(channel_b,channel_g,channel_r)

 

             

5. vconcat / hconcat

 

使用vconcat(),hconcat()可以在水平和垂直方向上连接(合并)图像。v表示垂直,h表示水平。

cv2 .vconcat([image1,image2])
cv2 .h concat([image1,image2])

 

6. ones/zeros

 

因为图像(Mat)要求彩色图像具有3个层/维度,所以需要在Mat所有的三个维度中都填充1或0。

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

如果想让我多加一个函数的话,我想在这里加上一个转置函数。

 

7. transpose

 

如果我们想要转置一个定义好的矩阵,我们所要做的就是使用这个函数:

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]]

搞定了!

原文链接:

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

本文为CSDN翻译文章,转载请注明出处。

更多精彩推荐
☞写了Bug,误执行 rm -fr /*,我删删删删库了,要跑路吗?| 原力计划

☞比 TensorFlow Lite 快 15.6 倍!业界首个移动 GPU BNN 加速引擎 PhoneBit 开源

☞视频 | 你不知道的"开源"60年秘史
☞GitHub标星10,000+,Apache项目ShardingSphere的开源之路
☞阿里技术专家告诉你,如何画出优秀的架构图?
☞加拿大API平台如何做到30%为中国明星项目?创业老兵这样说……
你点的每个“在看”,我都认真当成了喜欢
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐