计算机识别现实世界中的物体需要用到传感器设备(例如:摄像头、声纳等),就像人类的眼睛帮助我们看到周围的世界并做出反应一样。但计算机想要识别传感器检测到的数据到底是什么物体,就需要事先使用一定的视觉算法对大量的数据进行训练,才能够让计算机能够识别传感器数据中所包含的物体类别并做出响应。
如今,计算机视觉在身份核验、工业、农业、医学、交通、海洋等许多行业都有广泛的用途。因此,对高质量计算机视觉库的需求也相应增加。计算机视觉库是一个预先编写好的算法代码和一些预训练好的模型或者数据。目前,在开源领域,计算机视觉库数量非常多,包括图像识别库、人脸识别库等。
以下列举了一些目前最流行的计算机视觉算法库。
01 OpenCV
https://opencv.org/
https://github.com/opencv/opencv
OpenCV是迄今为止最古老也是最受欢迎的开源计算机视觉库,旨在为计算机视觉应用提供通用底层算法。
支持跨平台应用,支持Windows,Linux,Android和macOS。支持各种主流的开发语言,例如:Python,Java,C++等。OpenCV有一个Python Wrapper,支持GPU的CUDA模型。包含一些可以转换为TensorFlow模型的模型。最初由Intel开发,现在可以在开源BSD许可证下免费使用。
OpenCV的主要功能包括:
-
2D和3D图像工具包
-
人脸识别
-
手势识别
-
运动检测
-
人机交互
-
对象检测
-
图像分割和对象识别
02 Scikit-Image
https://scikit-image.org/
https://github.com/scikit-image/scikit-image
Scikit-Image是公认的最方便的Python视觉库,它是Scikit-Learn的一个扩展库。是监督和无监督机器学习最常用的工具之一。可以用于将NumPy数组作为图像对象进行处理。
以下是使用Scikit-image进行硬币识别的例子。
import skimage as ski image = ski.data.coins() # ... or any other NumPy array! edges = ski.filters.sobel(image) ski.io.imshow(edges) ski.io.show()