OpenCV的自我修养(一)——引入

简介: 本文主要讲述了OpenCV的主要概念以及主要模块的结构分布

1 引入

1.1 OpenCV是啥

说明:OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。


1.2 OpenCV——Python

说明:OpenCV—python是一个python绑定库,旨在解决计算机视觉问题。

OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法,所有OpenCV数组结构都转换为Numpy数组,这也使得与使用Numpy的其他库集成更容易。

openCV-Python的部署十分简单,但需要在有Numpy和matplotlib的前提下才能进行安装。我们可以打开cmd或者anaconda prompt的shell命令窗口,输入以下:

pip install opencv-python==3.4.2.17 -i https://pypi.tuna.tsinghua.edu.cn/simple

即可完成安装。如果想要测试是否安装成功,则试着运行以下的代码。

import cv2
#读一个图片
lena = cv2.inread("1.jpg")
cv2.imshow("image",lena)
cv2.waitKey(0)

OpenCV-python主要的模块如下所示,在后面的学习中,我直接称OpenCV-python为OpenCV了。

image-20220315150709955

其中core、highgui、imgproc是最基础的模块。

  • core模块实现了最核心的数据结构及其基本运算,如绘图函数,数组操作相关函数等
  • highgui模块实现了视频与图像的读取、显示、存储等接口
  • imgproc模块实现了图像处理的基础方法,包括图像滤波、图像的几何变化、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等

除了上述的三个最基本的模块,还有其他的一些模块也是用于图像处理。

  • features2d模块用于提取图像特征以及特征匹配,nonfree模块实现了一些专利算法,如sift特征。
  • objdetect模块实现了一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用Cascade Classification(级联分类)和Latent SVM等。
  • stitching模块实现了图像拼接功能。
  • FLANN模块包含快速近似最近邻搜索FLANN和聚类Clustering算法。
  • ml模块机器学习模块(SVM、决策树、Boosing等等)
  • photo模块包含图像修复和图像去噪两部分
  • video模块针对视频处理,如背景分离、前景检测、对象跟踪等。
  • calib3d模块即Calibration3D,这个模块主要是相机校准和三维重叠相关的内容。包含了基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等待。
  • G-API模块包含了超高效的图像处理pipeline引擎。
目录
相关文章
|
1月前
|
算法
编程之旅:从代码到哲学
在这篇文章中,我们将踏上一段独特的旅程,探索编程不仅仅是一门技术,更是一种思考世界的方式。通过个人的技术感悟和代码示例,我们将一同发现如何将编程的原则应用于日常生活,以及这些原则如何帮助我们更好地理解周围的世界。这不仅是一个关于代码的学习过程,更是一次心灵的成长之旅。
|
2月前
|
开发者
从代码到哲学:我的编程之旅
在这段旅程中,我从一个对代码一无所知的新手成长为一个能够用代码解决问题的开发者。这不仅仅是技术的成长,更是我对生活、对世界理解的深化。编程,对我来说,已经超越了技术层面,成为了一种思考问题、解决问题的方法,甚至是一种生活方式。
|
2月前
|
算法 搜索推荐
探索编程之旅:从代码到哲学的思考
【10月更文挑战第38天】在数字世界的编织中,代码是构成万物的基石。本文将带领读者穿梭于编程实践与人生哲学之间,探讨如何通过技术实现自我提升,并反思在技术追求中我们究竟寻求的是什么。从一个简单的代码示例出发,我们将逐步展开对编程艺术、生活选择和宇宙意义的思考,最终回到甘地的名言,“你必须成为你希望在世界上看到的改变”,以此来启发读者找到自己技术之路上的初心与方向。
40 3
|
2月前
|
设计模式 程序员 Serverless
探索编程之美:从代码细节到技术哲学
【10月更文挑战第28天】在这篇文章中,我们将一起走进编程的世界,探索那些隐藏在代码行间的艺术与哲理。通过深入浅出的讲解和实际的代码示例,我们不仅能够学习到技术层面的知识,更能体会到编程作为一种创造性活动所带来的乐趣和启示。无论你是初学者还是资深开发者,都能在这段旅程中找到新的视角和灵感。
54 11
|
2月前
|
算法 JavaScript 前端开发
编程之旅:从代码到哲学的探索
【10月更文挑战第31天】在数字世界的编织中,每一行代码都是我们与机器对话的语言。本文将带领读者踏上一段从编写第一行代码到深入理解编程哲学的旅程。我们将探索编程如何不仅仅是技术的实践,更是对问题解决、逻辑思维乃至生活哲学的一种体现。通过深入浅出的例子和反思,本文旨在启发读者思考编程背后的更深层次意义,以及它如何塑造我们对世界的认识。
|
4月前
|
机器学习/深度学习 人工智能 算法
编程之旅:从代码到哲学的启示
【9月更文挑战第20天】在编程的世界里,每一行代码都是思考的足迹,每一个算法都蕴含着解决问题的智慧。正如甘地所言,“你必须成为你希望在世界上看到的改变。” 本文将带你走进编程的内在世界,探索如何通过技术提升自我,实现个人成长和变革。
|
4月前
|
设计模式 算法 数据库连接
代码中汲取智慧,编程之旅与技术
在软件开发中,设计模式提供了解决常见问题的标准化方案,有助于提升代码质量和系统灵活性。本文详细介绍了PHP中的三种设计模式:单例模式、工厂模式和策略模式。单例模式确保类仅有一个实例并提供全局访问点,适用于管理共享资源;工厂模式封装了对象创建过程,降低系统耦合度;策略模式定义了一系列可互换的算法,便于算法切换。通过具体示例展示了每种模式的实现方法及其应用场景,帮助PHP开发者更好地理解和应用这些模式。
37 7
|
4月前
|
算法 搜索推荐
从代码到哲学:探索编程的深层意义
【9月更文挑战第22天】在这篇文章中,我们将深入探讨编程不仅仅是一门技术,更是一种思考方式。通过分析编程的基本原则和实践过程,我们可以发现编程与生活、哲学乃至宇宙规律之间存在着惊人的相似性。文章将带你从代码的字面意义出发,逐步展开到对生活的反思,最终触及到宇宙的本质,揭示出编程活动背后更深层次的意义。
44 5
编程之旅:从代码中寻找生活的启示
【9月更文挑战第19天】本文是一篇关于编程和生活哲理相结合的感悟文章。文章以通俗易懂的语言,深入浅出地探讨了编程与生活的相似性,旨在启发读者从编程的角度去思考生活,从而获得对生活的新认识。文章通过分享作者的个人经历,阐述了如何将编程中的逻辑思维、解决问题的方法应用到生活中,以及如何从编程的过程中找到生活的乐趣和意义。
|
5月前
|
开发者 Ruby
神秘编程魔法惊现!Ruby 元编程究竟隐藏着怎样的力量?竟能让代码自我进化!
【8月更文挑战第31天】《Ruby元编程:让代码自我进化》介绍了Ruby元编程的魅力,通过动态修改代码结构和行为,实现代码自我进化。文章通过实例展示了如何使用`class_eval`动态添加属性和方法,以及通过别名修改现有方法。此外,还介绍了利用模块实现代码复用和扩展。元编程为开发者提供了极大的灵活性和创造力,使代码更加动态高效。
35 0