Python OpenCV处理图像之图像直方图和反向投影


Posted in Python onJuly 10, 2018

本文实例为大家分享了Python OpenCV图像直方图和反向投影的具体代码,供大家参考,具体内容如下

当我们想比较两张图片相似度的时候,可以使用这一节提到的技术

直方图对比

反向投影

关于这两种技术的原理可以参考我上面贴的链接,下面是示例的代码:

0x01. 绘制直方图

import cv2.cv as cv
 
def drawGraph(ar,im, size): #Draw the histogram on the image
  minV, maxV, minloc, maxloc = cv.MinMaxLoc(ar) #Get the min and max value
  hpt = 0.9 * histsize
  for i in range(size):
    intensity = ar[i] * hpt / maxV #Calculate the intensity to make enter in the image
    cv.Line(im, (i,size), (i,int(size-intensity)),cv.Scalar(255,255,255)) #Draw the line
    i += 1
 
#---- Gray image
orig = cv.LoadImage("img/lena.jpg", cv.CV_8U)
 
histsize = 256 #Because we are working on grayscale pictures which values within 0-255
 
hist = cv.CreateHist([histsize], cv.CV_HIST_ARRAY, [[0,histsize]], 1)
 
cv.CalcHist([orig], hist) #Calculate histogram for the given grayscale picture
 
histImg = cv.CreateMat(histsize, histsize, cv.CV_8U) #Image that will contain the graph of the repartition of values
drawGraph(hist.bins, histImg, histsize)
 
cv.ShowImage("Original Image", orig)
cv.ShowImage("Original Histogram", histImg)
#---------------------
 
#---- Equalized image
imEq = cv.CloneImage(orig)
cv.EqualizeHist(imEq, imEq) #Equlize the original image
 
histEq = cv.CreateHist([histsize], cv.CV_HIST_ARRAY, [[0,histsize]], 1)
cv.CalcHist([imEq], histEq) #Calculate histogram for the given grayscale picture
eqImg = cv.CreateMat(histsize, histsize, cv.CV_8U) #Image that will contain the graph of the repartition of values
drawGraph(histEq.bins, eqImg, histsize)
 
cv.ShowImage("Image Equalized", imEq)
cv.ShowImage("Equalized HIstogram", eqImg)
#--------------------------------
 
cv.WaitKey(0)

0x02. 反向投影

import cv2.cv as cv
 
im = cv.LoadImage("img/lena.jpg", cv.CV_8U)
 
cv.SetImageROI(im, (1, 1,30,30))
 
histsize = 256 #Because we are working on grayscale pictures
hist = cv.CreateHist([histsize], cv.CV_HIST_ARRAY, [[0,histsize]], 1)
cv.CalcHist([im], hist)
 
 
cv.NormalizeHist(hist,1) # The factor rescale values by multiplying values by the factor
_,max_value,_,_ = cv.GetMinMaxHistValue(hist)
 
if max_value == 0:
  max_value = 1.0
cv.NormalizeHist(hist,256/max_value)
 
cv.ResetImageROI(im)
 
res = cv.CreateMat(im.height, im.width, cv.CV_8U)
cv.CalcBackProject([im], res, hist)
 
cv.Rectangle(im, (1,1), (30,30), (0,0,255), 2, cv.CV_FILLED)
cv.ShowImage("Original Image", im)
cv.ShowImage("BackProjected", res)
cv.WaitKey(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之数据处理编程实例(二)
May 22 Python
Python的迭代器和生成器使用实例
Jan 14 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
遗传算法python版
Mar 19 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
python 整数越界问题详解
Jun 27 Python
python zip()函数使用方法解析
Oct 31 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 Python
Python中 map()函数的用法详解
Jul 10 #Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 #Python
Python OpenCV处理图像之图像像素点操作
Jul 10 #Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 #Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 #Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 #Python
python操作excel文件并输出txt文件的实例
Jul 10 #Python
You might like
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python中暂存上传图片的方法
2015/02/18 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Django日志及中间件模块应用案例
2020/09/10 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
个人找工作的自我评价
2013/10/17 职场文书
自我反省检讨书
2014/01/23 职场文书
医学生个人求职信范文
2014/02/07 职场文书
八项规定整改措施
2014/02/12 职场文书
春季防火方案
2014/05/10 职场文书
酒店端午节活动方案
2014/08/26 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python