一、图像类型转换
在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的值来调整亮度。如果图像的颜色分布歪曲或过为淡板,可以采用比给定伽马值更大的值来进行颜色平衡。
- 在图像编码中的应用:伽马变换在图像编码中被广泛使用,它可以有效的消除图像数据中的大量冗余信息,并在保持图像质量的情况下缩小图像的数据规模。
# 设定伽马值
gamma = 0.5
# 对图像进行伽马变换
gamma_correction = np.power(img / 255.0, gamma)
gamma_correction = (gamma_correction * 255).astype(np.uint8)
文章出处登录后可见!
已经登录?立即刷新