Opencv学习笔记(三)图像灰度化、灰度直方图、直方图均衡化

图像灰度化

图像灰度化是将彩色图像转换为灰度图像。OpenCV中使用cv2.cvtColor()函数进行色彩空间转换,第一个参数为图像,第二个参数为转换类型,RGB图像转灰度图像的类型为cv2.COLOR_BGR2GRAY。

灰度直方图

直方图是图像的另一种表示方法,它反映了图像的灰度分布。
cv2.calcHist(images, channels, mask, histSize,rangs[, hist,[,accumulate]])函数统计一副图像的直方图,返回值为256*1的数组,对应了0~255灰度等级的像素个数。
images: 原图像(uint8或float32);
channels:统计某一通道的直方图,灰度图像的channels = [0],彩色图像B、G、R分别对应[0]、[1]、[2];
mask:掩模图像,统计整幅图像的直方图时为None,统计图像部分区域时就需要设计掩膜;
histSize:BIN的数目;
ranges:像素范围[0,255]。

直方图均衡化

直方图均衡化是将图像的像素灰度值均匀分布,目的是改善图像的对比度。
cv2.equalizeHist()可实现直方图均衡化,参数为灰度图像。

代码

import cv2
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread(r'F:\OPENCV\Opencv\flower.jfif', cv2.IMREAD_COLOR)
# 显示原始图像
cv2.namedWindow('opencv', cv2.WINDOW_NORMAL)
cv2.resizeWindow('opencv', (350, 400))
cv2.imshow('opencv', img)
# 图像灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.namedWindow('gray', cv2.WINDOW_NORMAL)
cv2.resizeWindow('gray', (350, 400))
cv2.imshow('gray', gray_img)

# 直方图均衡化
equal_img = cv2.equalizeHist(gray_img)
# 显示均衡化后的图像
cv2.namedWindow('equal_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('equal_img', (350, 400))
cv2.imshow('equal_img', equal_img)

# 绘制灰度直方图
hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
plt.figure(1)
plt.plot(hist)
plt.xlim([0, 256])
# 绘制均衡化后的灰度直方图
plt.figure(2)
equal_hist = cv2.calcHist([equal_img], [0], None, [256], [0, 256])
plt.plot(equal_hist)
plt.xlim([0, 256])
plt.show()

cv2.waitKey()
cv2.destroyAllWindows()

结果显示
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值