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类方法与对象方法
Mar 15 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
pandas中ix的使用详细讲解
Mar 09 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
Python pip install如何修改默认下载路径
Apr 29 Python
python右对齐的实例方法
Jul 05 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
python 5个实用的技巧
Sep 27 Python
python简单实现插入排序实例代码
Dec 16 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
python_tkinter事件类型详情
Mar 20 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 autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
python条件和循环的使用方法
2013/11/01 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python3实现绘制二维点图
2019/12/04 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
建筑班组长岗位职责
2014/01/02 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
新农村建设典型材料
2014/05/31 职场文书
房屋授权委托书范本
2014/10/07 职场文书
期末个人总结范文
2015/02/13 职场文书
员工工作表扬信
2015/05/05 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
html中两种获取标签内的值的方法
2022/06/16 jQuery
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript