这篇文章给大家介绍如何理解OpenCV及其工程应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。OpenCV是一个基于BSD许可(开源)发行的跨平台的计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV在图像分割、人脸识别、物体识别、动作跟踪、动作分析、机器视觉等领域都有广泛的应用。以下是OpenCV的基本操作及其应用案例。HSV这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V),该模型常用来做绿幕分割。在图像检测中,可以对样本进行色彩空间转换实现数据增强,如将训练数据直接转换到HSV空间,或者调整V(明度)通道的大小,改变图片的明暗,再转到BGR格式。在对图像作平移操作时,需创建2行3列变换矩阵,M矩阵表示水平方向上平移为x,竖直方向上的平移距离为y。旋转所需的变换矩阵可以通过函数cv2.getRotationMatrix2D得到。模糊滤波操作去除图像中的椒盐噪声、提高图像的对比度、实现锐化处理、提高立体感等。图像形态学操作是基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学。形态学有四个基本操作:侵蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。侵蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域它们能实现多种多样的功能,主要如下:消除噪声分割出独立的图像元素,在图像中连接相邻的元素寻找图像中的明显的极大值区域或极小值区域求出图像的梯度开运算:先腐蚀后膨胀,用于移除由图像噪音形成的斑点闭运算:先膨胀后腐蚀,用来连接被误分为许多小块的对象轮廓查找在图像检测领域有很广泛的应用,比如查找图像中明显的色块、条纹、物体边缘等等,查找轮廓前先要对图像进行二值化处理。查找到轮廓后可以通过drawContours函数绘制出轮廓游戏画面因为美术资源缺失、程序bug都会产生各种色块,常见的有白色、紫色等,怎么通过程序筛选出这类异常画面,加快测试过程呢?通过观察,我们发现色块类的异常都是一些比较规则的矩形图像,色彩差很明显,基于这些特点,我们可以很容易的筛选出色块。通过RGB通道的数值大小剔除掉其它的颜色,得到黑白二值图得到的黑白二值图由于除了色块外其它图像位置也有接近色块颜色的位置被保留了下来,需要剔除通过查找二值图轮廓的方法我们可以筛选出分离的小色块通过轮廓周长和面积剔除掉小色块,这些色块很可能就是提取的正常区域颜色较相似的点。由于色块更接近于矩形,我们可以通过轮廓计算出色块的宽和高,色块的面积可以估算出来,色块面积与估算面积越接近,说明检测到的色块更接近矩形,通过这个方法,可以筛选出大部分不规则的色块。OpenCV是如何完成以上这些操作的呢?OpenCV在读取图像的时候是将图像信息转换成了矩阵,默认矩阵为(height,width,channel),channel对应的是B、G、R通道,每个像素点的颜色由三个通道一起决定,和三元色的关系是一样的,B、G、R的大小代表的是色彩比例。色彩空间的转换是将图像数据从一种表示关系变换到了另一种表示关系,比如BGR转换到HSV颜色空间是将原本的三原色表示法转换到了色调(H),饱和度(S),明度(V)表示法,每个channel所表示的含义发生了变化。从信息的角度考虑,摄像机将光照信息采集后转化成了数字的形式(图像矩阵),颜色空间的转换是将图像数据从一种表示方法变换到另一种表示方法,信息的转化也会引起信息的丢失或者引入噪声,比如摄像机在采集光照信息的时候很容易采集到椒盐噪声,丢 香港云主机弃光照信息中的一些频段,清晰度降低等等,在做色彩空间转换的时候也可能发生信息丢失,比如从彩色图片转化到灰度图。深度学习中的图像检测、人脸识别就是要从这些图像信息中提取我们想要的信息。在做图像几何变换的时候,我们需要提供变换矩阵,矩阵是怎么完成这些操作的呢?我们知道矩阵代表的就是一种空间映射,nxm的矩阵(列向量线性无关)代表的是n维空间到m维空间的映射,如上图所示,第一个立方体所在的空间通过一个3×3的矩阵映射到了第二个立方体所在的空间,立方体的形状发生了变化,再比如第一个立方体所在的空间通过一个3×2的矩阵映射到了它的影子所在的空间,立方体被压缩成了一个平面。立方体可以通过矩阵(实数范围)映射成球体吗?因为其代表的是线性变换,所以是不可以的。我们在处理图像问题的时候要将信息从一个空间映射到另一个空间,由于问题的复杂性所以线性映射是满足不了要求的,这也就是为什么在深度学习中需要加入激活函数的原因。从上一节的分析中我们发现,图像的处理过程就是从数据中找规律,将图像信息从一种表示变换到另一种表示,这个工作正好是机器学习的强项,再延申一下,不管是图像数据、文本数据、音频数据,要从数据中找规律,都会用到机器学习,从信息的角度考虑,这些问题本质上是没有区别的。openCV已经集成了很多机器学习算法、如K近邻(KNN),支持向量机(SVM)、决策树、随机森林、Boost、逻辑回归、ANN等。下图是摘自scikit-learn的一张图片,很形象的展示了不同的机器学习算法是如何对数据进行处理的,从宏观角度来讲就是如何将信息变换到不同的空间。关于如何理解OpenCV及其工程应用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
相关推荐: Spring Cloud Config配置中心的native模式有什么用
本篇内容介绍了“Spring Cloud Config配置中心的native模式有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!由于很多时候,生产环境没有…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。