opencv十四天入门学习——task1
- 前言
- 1、计算机视觉简介
- 2、计算机视觉框架
- 2.1 传统框架
- 2.2 深度学习训练框架
- 2.3 深度学习部署框架
- 2.4 当前业界主流框架应用
- 3、opencv框架
- 4、图像读取与显示
前言
最近参加了Datawale组织的opencv两周入门学习教程,每天需要做笔记打卡,就把这里作为分享平台。第一天课程内容主要介绍了计算机视觉的发展、计算机视觉相关框架以及opencv框架等知识点,完成本地开发环境配置并实现了图片的读取和显示。
1、计算机视觉简介
计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。1982年马尔发布的《视觉》标志着计算机视觉成为正式学科。计算机视觉有两个任务:重建和识别,计算机视觉的目标是通过图灵测试(达到人类水准)。早期的研究主要集中于重建方面的任务,而现在随着深度学习在计算机视觉的广泛应用,目前的研究工作更多聚焦于识别任务。2012年AlexNet模型标志着深度学习在视觉领域的流行。
2、计算机视觉框架
2.1 传统框架
- Matlab工具箱
Matlab语言的计算机视觉工具箱有非常多。VLFeat是著名的计算机视觉/图像处理开源项目, 曾获ACM Open Source Software Competition 2010一等奖 ,它是由C语言编写并且提供Matlab接口的。DIPUM Toolbox是冈萨雷斯著名的图像处理教材《数字图像处理》的配套工具包, 主要是书中图像处理算法的实现。 - Matrox mil
由加拿大公司Matrox开发的图像处理软件开发包,是一个图像采集、运输、处理、分析和显示的一整套完整的程序库,包含了大量的优化函数用于图像处理,整个软件功能强大,尤其是图像预处理能力强。 - Halcon
HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了软件开发周期——HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。在欧洲以及日本的工业界已经是公认具有最佳效能的Machine Vision软件。 - VisionPro
康耐视 VisionPro 是领先的计算机式视觉软件。它主要用于设置和部署视觉应用 - 无论是使用相机还是图像采集卡。借助 VisionPro,用户可执行各种功能,包括几何对象定位和检测、识别、测量和对准,以及针对半导体和电子产品应用的专用功能。 - SimpleCV
SimpleCV代表简单计算机视觉,它是一个易于使用的Python框架,将开源计算机视觉库和用于解决问题的算法捆绑在一起。 它的目标是使程序员更容易开发计算机视觉系统,从而简化和简化许多最常见的任务。 - BoofCV
BoofCV 是一个 Java 的全新实时的计算机视觉库,BoofCV 易于使用而且具有非常高的性能。它提供了一系列从低层次的图像处理、小波去噪功能以及更高层次的三维几何视野。 - Dlib
Dlib是一个现代化的C ++工具箱,其中包含用于在C ++中创建复杂软件以解决实际问题的机器学习算法和工具。它广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。
2.2 深度学习训练框架
- Caffe
开源的、计算CNN相关算法的深度学习框架,最初开发于加利福尼亚大学伯克利分校, 作者是贾扬清 ,使用C++编写,提供Python与Matlab接口, 兼具表达性、速度和思维模块化 。 - Tensorflow
Tensorflow是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。由谷歌人工智能团队谷歌大脑开发维护,2015年起开放源代码。 - Pytorch
Pytorch是一个开源的Python机器学习库,基于Torch,2017年由Facebook人工智能研究院推出,是一个简洁高效快速的框架,目前应用广泛。 - Paddlepaddle
百度飞桨是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台,提供了丰富的套件适合新手上手深度学习模型,有着产业级的开源模型库。 - Keras
Keras是一个由Python编写的开源人工神经网络库,主要开发者是谷歌工程师 François Cholle ,可以作为高阶应用程序接口进行深度学习模型的设计、调试、评估、应用和可视化。
2.3 深度学习部署框架
- OpenVINO
OpenVINO是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和[深度学习视觉应用开发速度工具套件,支持各种英特尔平台的硬件加速器上进行深度学习,并且允许直接异构执行。支持Windows与Linux系统,Python/C++语言。 - TensorRT
TensorRT是英伟达开发的一款高性能深度学习推理优化器。包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。 - onnxruntime
ONNXRuntime是微软推出的一款推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。 - Deepface
DeepFace是Facebook在2014年的CVPR上提出来的,后续出现的DeepID和FaceNet也都体现DeepFace的身影,可以说DeepFace是CNN在人脸识别的奠基之作,目前深度学习在人脸识别中也取得了非常好的效果。 - YOLO/DarkNet
YOLO是目标检测领域优秀的网络模型,其作者开发的Darknet是个轻量级深度学习训练框架,用c和cuda编写,支持GPU加速。 - mmdetection
mmdetection是商汤和港中文大学联合开源的基于Pytorch的对象检测工具包,属于香港中文大学多媒体实验室open-mmlab项目的一部分。该工具包提供了已公开发表的多种流行的检测组件,通过这些组件的组合可以迅速搭建出各种检测框架。 - Paddle-detection/seg/ocr
百度飞桨的PaddleCV为开发者提供了面向图像分类、目标检测、图像分割、文本识别等视觉场景的多种端到端开发套件和海量视觉方向模型,并被开发者广泛使用。
2.4 当前业界主流框架应用
机器视觉方向主要使用Halcon、VisionPro、Mil、OpenCV;深度学习方向通常是训练框架tensorflow、pytorch、paddlepaddle +部署框架 openvino、tensorRT、onnxruntime。主流语言是Python与C++。
3、opencv框架
opencv是一个开源的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效,由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
opencv项目1999年由英特尔公司启动,2006正式发布1.0,目前最新的是4.6版本。opencv的优势是免费开源、函数库丰富,并且便于优化与加速。
opencv的模块由基础而必不可少的Core/Imgcodecs/Video I/O、HighGUI,必需的中间层的Imgproc,还有可根据需要配置安装的机器学习、相机矫正、特征提取、视频分析等模块。官方支持c/c++/python/java/js语言,开发者也研发出C#语言的支持。opencv的特点就能加速技术的应用,包括TBB、PPL、SSE等。官方教程支持C++和Python。
opencv-Python安装
因为我之前安装过python、pycharm、opencv等,所以这部分我没有按照教程走,具体安装也可以CSDN搜索一下教程很多。我之前是在pycharm中选择好python解释器后,直接点击加号搜索下载opencv-python的包,完成环境的配置。
4、图像读取与显示
打开pycharm新建项目,配置好解释器与依赖包,输入代码然后运行,代码和结果如下图。(我的图片是从github中的opencv开源数据中下载的,放在当前文件夹下)
代码:
import cv2 as cv
import numpy as np
image = cv.imread("./apple.jpg")
cv.imshow("input",image)
cv.waitKey(0)
cv.destroyAllWindows()
结果:
实验成功。