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中ConfigParse模块的用法
Sep 29 Python
改进Django中的表单的简单方法
Jul 17 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
基于Python列表解析(列表推导式)
Jun 23 Python
Django保护敏感信息的方法示例
May 09 Python
Django Rest framework三种分页方式详解
Jul 26 Python
如何在python中实现随机选择
Nov 02 Python
Python单元测试与测试用例简析
Nov 09 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
Django Channel实时推送与聊天的示例代码
Apr 30 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判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php实现文件上传基本验证
2020/03/04 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
Python分析学校四六级过关情况
2017/11/22 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
基于python指定包的安装路径方法
2018/10/27 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
党建示范点实施方案
2014/03/12 职场文书
初中学生期末评语
2014/04/24 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript