opencv-直方图及其操作

本文详细介绍了OpenCV中直方图的应用,包括颜色直方图绘制、直方图均衡化、自适应直方图均衡化及直方图反投影。通过实例展示了如何使用这些技术改善图像质量,实现目标检测。

opencv中的直方图是反应一张图片中的颜色分布
直方图

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('t2.jpg')
cv2.imshow('test',img)
img_B = cv2.calcHist([img],[0],None,[255],[0,255]) #蓝颜色直方图
plt.plot(img_B,label='B',color='b')

img_G = cv2.calcHist([img],[1],None,[255],[0,255]) #绿颜色直方图
plt.plot(img_G,label='',color='g')

img_R = cv2.calcHist([img],[2],None,[255],[0,255]) #红颜色直方图
plt.plot(img_R,label='R',color='r')

plt.show()

T1
t2
直方图均衡化
可用来进行去一些雾,使得图像更加清晰,根据下图的像素分布,直方图均衡化相当于把原图的图像的分布拉宽,使得像素分布相对均匀。

# 直方图均衡化
img = cv2.imread('test2.jpg',0)
his = cv2.calcHist([img],[0],None,[255],[0,255])
plt.plot(his,label='his',color='r')

dst = cv2.equalizeHist(img)

his = cv2.calcHist([dst],[0],None,[255],[0,255])
plt.plot(his,label='his',color='b')

plt.show()

cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)

直方图均衡化
直方图均衡化
自适应直方图均衡化
相当于生成一个滑动窗口,在这个滑动窗口内进行直方图均值化,相当于局部直方图均值化,使得整张图更加自然,如下图依次是原图、直方图均衡化,自适应直方图均衡化,由图可见直接直方图均值化图片显得比较亮,而自适应直方图均衡化比较自然。

# 自适应直方图
img = cv2.imread('ttt.jpg',0)
cv2.imshow('src',img)
# 普通直方图均值化
dst1 = cv2.equalizeHist(img)
cv2.imshow('dst1',dst1)
# 自适应直方图均值化
clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
dst2 = clahe.apply(img)
cv2.imshow('dst2',dst2)
cv2.waitKey(0)

自适应直方图均值化
直方图反投影

# 直方图反投影
roi = cv2.imread('bg_ball.jpg')
hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
target = cv2.imread('football.jpg')
hsvt = cv2.cvtColor(target,cv2.COLOR_BGR2HSV)
roihist = cv2.calcHist([hsv],[0,1],None,[180,256],[0,180,0,256],1)
cv2.normalize(roihist,roihist,0,255,cv2.NORM_MINMAX)
dst = cv2.calcBackProject([hsvt],[0,1],roihist,[0,180,0,256],1)
disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
dst = cv2.filter2D(dst,-1,disc)

ret,thresh = cv2.threshold(dst,50,255,0)

thresh = cv2.merge((thresh,thresh,thresh))
res = cv2.bitwise_and(target,thresh)
res = np.hstack((target,thresh,res))
cv2.imshow('img',res)
cv2.waitKey(0)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值