OpenCV从入门到精通——直方图操作

import cv2

img = cv2.imread(“./images/8.jpg”,cv2.IMREAD_GRAYSCALE)

cv2.imshow(“res”,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)


![在这里插入图片描述](https://img-blog.csdnimg.cn/8019148dd2354a37922b9325faabacfa.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNzM1Mg==,size_16,color_FFFFFF,t_70)


### 直方图均值化


* 去雾好用



import cv2
import matplotlib.pyplot as plt

img = cv2.imread(‘7.jpg’, 0)
cv2.imshow(“src”, img)
cv2.waitKey(0)
his = cv2.calcHist([img], [0], None, [255], [0, 255])
plt.plot(his, label=‘his’, color=‘r’)

plt.show()

dst = cv2.equalizeHist(img)
cv2.imshow(“dst”, dst)
cv2.waitKey(0)

cv2.imwrite(“15.jpg”, dst)

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


* 均值化前


![在这里插入图片描述](https://img-blog.csdnimg.cn/19c93bbce6c94d02be9a9fe4122108ca.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNzM1Mg==,size_16,color_FFFFFF,t_70)


* 均值化后图  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/16fe647bbf0b4f4fadeeb4077fb6546a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNzM1Mg==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f40869ebe86b4b798a171cafe1183121.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNzM1Mg==,size_16,color_FFFFFF,t_70)


### 直方图计算



-*- coding: utf-8 -*-

“”"
@Time : 2021/7/23 上午10:17
@Auth : 陈伟峰
@File :hist.py
@phone: 15882085601
@IDE :PyCharm
@Motto:ABC(Always Be Coding)

“”"
import cv2
import matplotlib.pyplot as plt

img = cv2.imread(‘./images/1.jpg’)
img[…,0]=0
img[…,1]=0
cv2.imshow(“…”,img)

img_B = cv2.calcHist([img], [0], None, [256], [0, 256])

plt.plot(img_B, label=‘B’, color=‘b’)

img_G = cv2.calcHist([img], [1], None, [256], [0, 256])

plt.plot(img_G, label=‘G’, color=‘g’)

img_R = cv2.calcHist([img], [2], None, [256], [0, 256])
plt.plot(img_R, label=‘R’, color=‘r’)

plt.show()


![在这里插入图片描述](https://img-blog.csdnimg.cn/933467756ae4414880c982191b09a5cc.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjkxNzM1Mg==,size_16,color_FFFFFF,t_70)


### 直方图反投影



import cv2
import numpy as np

roi = cv2.imread(‘10.jpg’)
hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
target = cv2.imread(‘9.jpg’)
hsvt = cv2.cvtColor(target, cv2.COLOR_BGR2HSV)

roihist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])

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、付费专栏及课程。

余额充值