OpenCV中的一些图像方法记录

一、图像类型转换

在python中,常用PIL及opencv读取,其中就涉及不同方式读取图片的格式不同。其中PIL.Image.open()读取的图片为RGB图,而cv2.imread()读取图片则为BGR图。
有时我们可能还需要灰度图,因此就需要用到图像的类型转换,常用方法如下:

    image = Image.open('xx.jpg')
    # 转换为灰度图像
    grayscale_image = image 
    # 将灰度图像转换为OpenCV的图像格式
    gray_image_cv = cv2.cvtColor(np.array(grayscale_image), cv2.COLOR_RGB2GRAY)
	#同理BGR转RGB
	frame = cv2.imread('xx.jpg')
	frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

二、opencv 形态学变换——腐蚀、膨胀

使用函数为:cv2.morphologyEx(img,op,kernel)

op 描述
cv2.MORPH_OPEN 开运算,先腐蚀后膨胀的过程。该运算可以消除小黑点。在纤细点处分离物体,平滑处理较大物体边界,同时不显著改变其面积
cv2.MORPH_CLOSE 闭运算,先膨胀后腐蚀的过程。该运算可消除内部小黑洞
cv2.MORPH_GRADIENT 形态学梯度(梯度=膨胀-腐蚀),可突出团块的边缘,同时保留物体边缘轮廓
cv2.MORPH_TOPHAT 顶帽,突出比原轮廓亮的部分
cv2.MORPH_BLACKHAT 黑帽,突出比原轮廓暗的部分
	# 具体使用方式
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
    segm = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

三、伽马变换

伽马变换是一种非线性的图像增强方法,主要用于调整图像的亮度、对比度和颜色平衡。伽马变换是通过调整伽马值来调整图像的对比度和亮度。

  1. 提升对比度:对于一些灰度值过低的图像,它们的对比度非常低,难以展示图像内部的细节。通过将伽马值设定在低于1的值,可以提升图像中灰度值较低的像素的亮度值,这可以提高图像的整体对比度,从而增强图像的可视性。
  2. 调整亮度和颜色平衡:在图像处理中,经常需要对图像中的亮度和色彩进行调整。对于过于暗淡的图像,可以通过将伽马值设定在大于1的值来调整亮度。如果图像的颜色分布歪曲或过为淡板,可以采用比给定伽马值更大的值来进行颜色平衡。
  3. 在图像编码中的应用:伽马变换在图像编码中被广泛使用,它可以有效的消除图像数据中的大量冗余信息,并在保持图像质量的情况下缩小图像的数据规模。
    # 设定伽马值
    gamma = 0.5
 
    # 对图像进行伽马变换
    gamma_correction = np.power(img / 255.0, gamma)
    gamma_correction = (gamma_correction * 255).astype(np.uint8)

你可能感兴趣的:(opencv,计算机视觉,python)