- 彩色图像
- 颜色追踪(inRange的使用)
hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
lower_hsv=np.array([11,43,46])
upper_hsv=np.array([25,255,255])
mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)- inRange函数是OpenCV库中的一个功能,用于检查图像像素值是否在指定的范围内,并生成一个二值图像。
- 在OpenCV的inRange函数中,输入参数包括源图像(src)、下界阈值(lowerb)、上界阈值(upperb)以及可选的输出图像(dst)。该函数主要用于将图像中的像素值限制在指定的范围内,通常应用于灰度图像或彩色图像。如果像素值在下界和上界之间,则在输出图像中对应像素被设置为白色(255),否则为黑色(0)。这种处理方式适用于图像分割、目标提取等任务,尤其在CAMShift算法中非常关键。在使用inRange函数时,首先需要确定合适的颜色空间。对于基于颜色的操作,HSV色彩空间通常比RGB色彩空间更加直观和有效。因此,图像通常会从BGR色彩空间转换为HSV色彩空间。例如,若要提取图像中的蓝色对象,可以定义蓝色的下界和上界阈值,然后将这些阈值应用到HSV图像上,从而得到一个二值图像,其中满足条件的像素为白色,不满足条件的像素为黑色。在实际应用中,可以使用以下步骤来实现这一过程。首先,加载图像并将其从BGR色彩空间转换为HSV色彩空间。然后,根据需要提取的颜色范围定义下界和上界阈值。例如,要提取蓝色对象,可以设置下界为(100, 50, 50)、上界为(130, 255, 255)。接下来,调用cv2.inRange()函数并将结果保存在一个掩模(mask)中。最后,可以将此掩模应用于原始图像,仅保留特定颜色范围内的像素。
- 图像平滑的方式
- 高斯滤波(Gaussian Filtering):
- 双边滤波(Bilateral Filtering):
- 在保持边缘的同时平滑图像,考虑像素值的强度和距离。
- 最大值/最小值滤波:
- 最大值滤波可以增强亮区域,最小值滤波可以增强暗区域。
- 双边高斯滤波(Bilateral Gaussian Filter):
- 结合了双边滤波和高斯滤波的优点,使用高斯函数进行距离和强度的加权。
- 局部对比度增强(Local Contrast Enhancement):
- 通过增强图像的局部细节来平滑图像,通常用于突出图像的纹理。
- 频域滤波(Frequency Domain Filtering):
- 非局部均值滤波(Non-Local Means):
- α-trimmed滤波:
- 先对邻域内的像素值进行排序,然后去掉一定比例的最小和最大的像素值,取剩余像素的平均值。