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输出一个杨辉三角的例子
Jun 13 Python
python字符串的常用操作方法小结
May 21 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
ASP.NET Core中的配置详解
Feb 05 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
DOMXML函数笔记
2006/10/09 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php简单分页类实现方法
2015/02/26 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
python生成密码字典的方法
2018/07/06 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
给我一面国旗 python帮你实现
2019/09/30 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
GMP办公室主任岗位职责
2014/03/14 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
校园运动会广播稿
2014/10/06 职场文书
精神病医院见习报告
2014/11/03 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
运动会表扬稿范文
2015/05/05 职场文书
英雄儿女观后感
2015/06/09 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Vue router配置与使用分析讲解
2022/12/24 Vue.js