8、OpenCV Python 图像直方图
__author__ = "WSX"
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt def plot( img):
plt.hist(img.ravel() , 256 ,[0 ,256])
print(img.ravel()) #统计频次
plt.show() def hist( img ):#反应图像的主要特征
color = ("blue" ,"green" , "red")
for i , color in enumerate(color):
hist = cv.calcHist([img] , [i], None ,[256],[0,256]) #参数2:通道数 参数三:mask存在?
plt.plot(hist , color = color)
plt.xlim([0 , 256])
plt.show() #-------------------------------直方图应用-------------------
# 均衡化(调整对比度) 和 比较 # 整体均衡化(基于灰度图) 增强图像的一个手段
def equ_hist( img ):
gray = cv.cvtColor( img , cv.COLOR_BAYER_BG2GRAY)
dst = cv.equalizeHist( gray ) # 均衡化
cv.imshow("equ" ,dst) # 局部均衡化
def equ_hist( img ):
gray = cv.cvtColor( img , cv.COLOR_BAYER_BG2GRAY)
cla = cv.createCLAHE( clipLimit= 2, tileGridSize=(8,8)) # 均衡化
dst = cla.apply(gray)
cv.imshow("equ" ,dst) #直方图比较(多种比较方法)比较图片相似度
def creat_rgb_hist( img ):
h , w ,c = img.shape
rgbhist = np.zeros([16 * 16 * 16 , 1] ,np.float32)
bsize = 256 / 16
pass def hist_compare(img1 , img2): #比较图像的相似性
hist1 = creat_rgb_hist( img1 )
hist2 = creat_rgb_hist( img2 )
match1 = cv.compareHist( hist1 , hist2, cv.HISTCMP_BHATTACHARYYA ) #第三个参数 是 比较的方式
match2 = cv.compareHist(hist1, hist2, cv.HISTCMP_CORREL)
match3 = cv.compareHist(hist1, hist2, cv.HISTCMP_CHISQR)
print("""巴氏:%s
相关性:%s
卡方:%s
""" %(match1 , match2 ,match3)) #----------------------------直方图反向投影-------------------------- def main():
img = cv.imread("1.JPG")
cv.namedWindow("Show", cv.WINDOW_AUTOSIZE)
cv.imshow("Show", img)
#plot(img)
hist(img)
cv.waitKey(0)
cv.destroyAllWindows() main()
8、OpenCV Python 图像直方图的更多相关文章
- opencv python 图像二值化/简单阈值化/大津阈值法
pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表 ...
- 【图像处理】基于OpenCV实现图像直方图的原理
背景 图像的直方图是衡量图像像素分布的一种方式,可以通过分析像素分布,使用直方图均衡化对图像进行优化,让图像变的清晰. opencv官方对图像直方图的定义如下: 直方图是图像中像素强度分布的图形表达方 ...
- OpenCV(7)-图像直方图
直方图定义可参考这里.图像的直方图用来表示图像像素的统计信息,它统计了图像每一个通道(如果是多通道)中,每个像素的个数(比例). 计算直方图 OpenCV提供了直接计算直方图的函数 void calc ...
- OPENCV(5) —— 图像直方图
新版本对直方图不再使用之前的histogram的形式,而是用统一的Mat或者MatND的格式来存储直方图,可见新版本Mat数据结构的优势. C++: void calcHist(const Mat* ...
- 11、OpenCV Python 图像金字塔
__author__ = "WSX" import cv2 as cv import numpy as np # 高斯金字塔 #金字塔 原理 ==> 高斯模糊+ 降采样 #金 ...
- 10、OpenCV Python 图像二值化
__author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...
- 1、OpenCV Python 图像加载和保存
__author__ = "WSX" import cv2 as cv # 这里的文件是图片或者视频 def Save_File( image ): cv.imwrite(&quo ...
- opencv:图像直方图均衡化
// 直方图均衡化 Mat gray, dst; cvtColor(src, gray, COLOR_BGR2GRAY); equalizeHist(gray, dst); imshow(" ...
- OpenCV 绘制图像直方图
OpenCV绘制图像直方图,版本2.4.11 直方图可展示图像中的像素分布,是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数.可以借助观察该直方图了解需要如何调整亮度分布.这种直方 ...
随机推荐
- yum 使用笔记
yum 重新配置了源以后,用 yum clean all 先clean一下,才能用新的.
- Windows Backdoor Tips
名称:在用户登录时,运行这些程序 位置: Computer Configuration\\Policies\\Administrative Templates\\System\\Logon\\ 中 d ...
- 2015.1.8 Left join 左连接
格式 select f1.a, f2.b form f1 left jion f2 on .... 注意:左边的查询部分只能有select和from,不能出现where order by等.若有必须在 ...
- java 多线程系列---JUC原子类(一)之框架
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIn ...
- java 多线程系列基础篇(一)
多线程状态图: Thread类的两个方法比较: yield方法: Yield是一个静态的原生(native)方法 Yield告诉当前正在执行的线程把运行机会交给线程池中拥有相同优先级的线程. Yiel ...
- spring-初始化bean
@EnableScheduling@Servicepublic class BaseTask implements InitializingBean, ApplicationContextAware{ ...
- 【总结整理】webGIS学习
安装ArcGIS Server + ArcSDE + PostgreSQL + ArcMap安装(windows7)博客:https://blog.csdn.net/buqutianya/articl ...
- Swing绘图API
----------------siwuxie095 工程名:TestSwingPaintAPI 包名:com.siwuxie095.swing ...
- iOS 本地加载js文件
#import "RootViewController.h" @interface RootViewController ()<UIWebViewDelegate> @ ...
- Struts第三天
OgnlValueStack贯穿整个 Action 的生命周期. 它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器.它的封装是由struts2框架完成的. ...