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 10 Python
python图片验证码生成代码
Jul 02 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
python datetime时间格式的相互转换问题
Jun 11 Python
python Paramiko使用示例
Sep 21 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python中doctest库实例用法
Dec 31 Python
Python作用域和名称空间的详细介绍
Apr 13 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预定义常量
2006/12/25 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
nodejs教程之入门
2014/11/21 NodeJs
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
在购买印度民族服饰:Soch
2020/09/15 全球购物
药店主任岗位责任制
2014/02/10 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
小学见习报告
2014/10/31 职场文书
党小组鉴定意见
2015/06/02 职场文书
趣味运动会口号
2015/12/24 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书