在本节中,您将了解OpenCV中的图像处理(操作)函数。
基本绘图
我们将学习如何绘制简单的几何与OpenCV!
在本教程中,您将学习如何:
使用OpenCV函数line()绘制一条线
使用OpenCV函数ellipse()绘制椭圆
使用OpenCV函数rectangle()绘制一个矩形
使用OpenCV函数circle()画一个圆
使用OpenCV函数fillPoly()绘制一个多边形
1.Point表示一个二维点,由其图像坐标x和y来指定,我们可以将其定义为:
Point pt;pt.x = 10;pt.y = 8; 或者 Point pt = Point(10, 8);
2.Scalar表示一个4元向量。类型标量在OpenCV中广泛用于传递像素值。
Scalar( a, b, c ),将定义一个BGR颜色,如:蓝色= a,绿色= b和红色= c
随机生成器和文本
我们将使用OpenCV绘制一些看起来很漂亮的东西!
在本教程中,您将学习如何:
使用随机数生成器类(cv::RNG)及如何从均匀分布中获得随机数。
使用函数cv::putText在OpenCV窗口上显示文本
1.创建一个随机数生成器对象(RNG):
RNG rng( 0xFFFFFFFF );
平滑图像
让我们来看看一些基本的线性滤波器!
在本教程中,您将学习如何应用不同的线性过滤器平滑图像使用OpenCV函数,如:
blur()
GaussianBlur()
medianBlur ()
bilateralFilter ()
缩小和扩张
让我们改变物体的形状!
在本教程中,您将学习如何:应用两个非常常见的形态运算符:缩小和膨胀。为此,您将使用以下OpenCV函数:
cv::erode
cv::dilate
1.侵蚀和扩张有广泛的用途,例如:去除噪声;图像中单个元素的隔离和不同元素的连接;在图像中发现强度、凸起或洞
2.将用于执行操作的内核。如果我们没有指定,默认是一个简单的3x3矩阵。否则,我们可以指定它的形状。为此,我们需要使用函数cv::getStructuringElement:
Mat element = getStructuringElement( erosion_type,Size( 2*erosion_size + 1, 2*erosion_size+1 ),Point( erosion_size, erosion_size ) );
erode( src, erosion_dst, element );
多形态的转换
这里我们研究不同的形态学算子
使用OpenCV函数cv::morphologyEx应用形态变换,如:
Opening:
它是由图像膨胀后缩小得到的。dst=open(src,element)=dilate(erode(src,element)),用于移除小物体(假设物体在黑暗的前景上是明亮的)
Closing:
它是由图像缩小后膨胀得到的。dst=close(src,element)=erode(dilate(src,element)),用于去除小洞(黑暗区域)
形态学梯度:
dst=morphgrad(src,element)=dilate(src,element)−erode(src,element),用于寻找一个对象的轮廓是
高顶礼帽
dst=tophat(src,element)=src−open(src,element)
黑帽
dst=blackhat(src,element)=close(src,element)−src
随意操作
学习如何使用“随意操作”在二进制图像中查找
图像金字塔
如果我需要更大/更小的图像怎么办?
基本的阈值操作
经过这么多处理后,是时候决定哪些像素留下了
使用范围内的阈值设定操作
使用范围内函数进行阈值设定操作。
制作你自己的线性过滤器
我们在哪里学习设计自己的过滤器
为图像添加边框
我们在哪里学习如何填充图像
Sobel衍生品
我们在哪里学习如何计算梯度和使用它们来检测边缘
拉普拉斯算子
我们在哪里学到了拉普拉斯算子以及如何用它来检测边
精明的边缘检测器
我们在哪里学会了一种复杂的边缘检测方法
在本教程中,您将学习如何:
使用OpenCV函数cv::Canny实现Canny边缘检测器。
脚腕线变换
我们在哪里学习如何检测线条
脚腕圆变换
我们在哪里学习如何检测圆圈
重新映射
我们在哪里学习如何操纵像素位置
仿射变换
我们在哪里学习如何旋转,翻译和缩放我们的图像
直方图均衡化
我们在哪里学习如何提高图像的对比度
直方图计算
我们在哪里学习如何创建和生成直方图
直方图的比较
我们在哪里学会计算直方图之间的度量
背投影
我们在哪里学习如何使用直方图在图像中找到相似的对象