0
点赞
收藏
分享

微信扫一扫

Qt编译配置OpenCV+opencv_contrib(使用cmake)

形态学变换

形态学变换是一种基于形状的图像处理技术,主要应用于二值化图像。它的核心操作包括腐蚀和膨胀,这两者是对立的基本操作。

  • 核(结构化元素):核是一个小的矩阵或模板,用于在图像上进行操作。它定义了进行形态学变换时考虑的邻域范围。

  • 腐蚀(Erosion):腐蚀操作会缩小图像中目标的区域。它通过将核与图像中相应部分的重叠区域进行比较,并将最小值赋给中心像素,从而减少亮区域的大小。

  • 膨胀(Dilation):膨胀操作会扩大图像中目标的区域。它通过将核与图像中相应部分的重叠区域进行比较,并将最大值赋给中心像素,从而增加亮区域的大小。

图片颜色识别

1.RGB颜色空间

RGB颜色空间是图像处理中最常见的颜色模型,用于表示和显示彩色图像。RGB代表红色(Red)、绿色(Green)和蓝色(Blue),这三种基本颜色通过不同强度的组合可以生成其他颜色。RGB模型广泛应用于电视、电脑显示屏等设备。

RGB颜色模型基于笛卡尔坐标系,其中:

  • 红色、绿色和蓝色分别位于坐标轴的三个角上。

  • 黑色位于原点(0,0,0),白色则位于坐标轴最大值的位置(255,255,255)。

  • RGB颜色空间可以产生大约1600万种颜色,几乎涵盖了所有可见颜色。

在OpenCV中,颜色是以BGR(蓝色、绿色、红色)的方式存储的,因此红色的像素值为(0,0,255),而不是(255,0,0)。

2.颜色加法,颜色加权加法

使用OpenCV的cv.add()函数或简单的NumPy操作(res = img1 + img2)可以将两幅图像相加。两幅图像需要具有相同的大小和类型。

OpenCV的加法操作是饱和加法,即像素值的总和不会超过255。NumPy的加法是模运算,会处理像素值的溢出,表现为图像混合。图像混合的公式为:

其中,α的值在0到1之间变化,可以控制混合效果。

要将两幅图像以指定权重混合(如第一幅图像权重0.6,第二幅图像权重0.4),可以使用cv2.addWeighted()函数:

在这里,γ通常设为零。

 

3.HSV颜色空间

HSV(色调、饱和度、亮度)颜色空间是一种用于描述颜色的模型,常用于图像处理和计算机视觉中。与RGB(红、绿、蓝)模型不同,HSV将颜色分解为三个独立的分量,使得对颜色的调整和操作更加直观和方便。

HSV颜色模型是一种六角锥体模型,如下图所示:

  • 色调(Hue, H):表示颜色的类型或种类,以角度度量,范围通常为0°到360°。在HSV颜色空间中,为了与计算机处理的需要相适应,色调的范围常常被映射到0到180的范围,其中0°代表红色,120°代表绿色,240°代表蓝色,其他颜色位于这些基色之间。例如,黄色是60°,青色是180°,紫色是300°。

  • 饱和度(Saturation, S):表示颜色的纯度或强度,范围通常为0%到100%。饱和度越高,颜色越鲜艳;饱和度为0时,颜色呈现为灰色。HSV中的饱和度范围被映射到0到255之间,其中0代表无色(灰色),255代表纯色。

  • 亮度(Value, V):表示颜色的明亮程度,范围从0%(黑色)到100%(白色)。亮度越高,颜色越亮;亮度为0时,颜色为黑色。HSV中的亮度范围也被映射到0到255之间,其中0代表黑色,255代表最亮的颜色。

在实际应用中,HSV颜色空间可以使得对颜色的调整更加直观,比如在图像处理中,调整色调可以改变图像的色彩,调整饱和度可以改变颜色的鲜艳度,而调整亮度可以改变图像的明暗程度。这种表示方式在处理图像的颜色分离、色彩增强等操作时特别有用。

4.制作掩膜

掩膜(Mask)在图像处理中用于选择性地遮挡或突出图像的特定区域。它通常是一个二值图像,尺寸与原图像相同,其中目标区域标记为1(白色),其余区域标记为0(黑色)。掩膜可以基于HSV颜色范围进行调整,以便对图像的特定颜色区域进行处理或分析。

与运算、图片颜色替换

在图像处理中,“与”运算用于对图像的像素值进行操作。具体而言,它将两个图像中对应的像素值进行“与”运算,生成一个新图像。掩膜(Mask)是一种常见的操作工具,通常是一个二值图像,与原图像尺寸相同,其中目标区域标记为1(白色),其他区域标记为0(黑色)。在处理图像时,可以通过掩膜选择性地修改图像的部分区域。例如,如果掩膜中白色区域表示需要处理的部分,我们可以用它来对原图像中的这些区域进行像素值的修改,从而实现颜色的替换或其他操作。

ROI切割

ROI(Region of Interest)是图像处理中的一个重要概念,它指的是我们关注的图像区域。例如,如果我们要检测眼睛,通常只关心脸部区域,因此可以将脸部提取出来,以减少计算量并提高效率。

在使用OpenCV读取图像时,图像数据会被存储为Numpy数组,其中图像的高度、宽度和颜色通道分别对应数组的第一个、第二和第三维度。通过Numpy的切片操作,我们可以指定要提取的ROI区域的坐标,从而仅获取感兴趣区域的像素值。这种方法可以显著减少数据处理和存储的负担。

 

添加水印

添加水印通常涉及将一个图像(水印)叠加到另一张图像上。以下是一个使用OpenCV和Numpy在Python中添加水印的简单示例:

 

举报

相关推荐

0 条评论