首先是opencv在图像处理方面的基础应用,彩色图像的相关知识和技术以及直方图的均衡化和规定化的原理是必须提前掌握,这些我就不做过多的介绍了。 本次实验也是基于python下完成的。

老师要求的是在hsv模型里对直方图进行规定化,所以如果你是在rgb模型下进行直方图规定化,只需要将rgb和hsv互相转化的部分删除即可,重点并不是这里。

import cv2

import numpy as np

from matplotlib import pyplot as plt

img1 = cv2.imread('E:\\picSource\\Fig7A.jpg')

img2 = cv2.imread('E:\\picSource\\Fig7B.jpg')

img_hsv1 = cv2.cvtColor(img1, cv2.COLOR_BGR2HSV) # bgr转hsv

img_hsv2 = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)

color = ('h', 's', 'v')

for i, col in enumerate(color):

# histr = cv2.calcHist([img_hsv1], [i], None, [256], [0, 256])

hist1, bins = np.histogram(img_hsv1[:, :, i].ravel(), 256, [0, 256])

hist2, bins = np.histogram(img_hsv2[:, :, i].ravel(), 256, [0, 256])

cdf1 = hist1.cumsum() # 灰度值0-255的累计值数组

cdf2 = hist2.cumsum()

cdf1_hist = hist1.cumsum() / cdf1.max() # 灰度值的累计值的比率

cdf2_hist = hist2.cumsum() / cdf2.max()

diff_cdf = [[0 for j in range(256)] for k in range(256)] # diff_cdf 里是每2个灰度值比率间的差值

for j in range(256):

for k in range(256):

diff_cdf[j][k] = abs(cdf1_hist[j] - cdf2_hist[k])

lut = [0 for j in range(256)] # 映射表

for j in range(256):

min = diff_cdf[j][0]

index = 0

for k in range(256): # 直方图规定化的映射原理

if min > diff_cdf[j][k]:

min = diff_cdf[j][k]

index = k

lut[j] = ([j, index])

h = int(img_hsv1.shape[0])

w = int(img_hsv1.shape[1])

for j in range(h): # 对原图像进行灰度值的映射

for k in range(w):

img_hsv1[j, k, i] = lut[img_hsv1[j, k, i]][1]

hsv_img1 = cv2.cvtColor(img_hsv1, cv2.COLOR_HSV2BGR) # hsv转bgr

hsv_img2 = cv2.cvtColor(img_hsv2, cv2.COLOR_HSV2BGR)

cv2.namedWindow('firstpic', 0)

cv2.resizeWindow('firstpic', 670, 900)

cv2.namedWindow('targetpic', 0)

cv2.resizeWindow('targetpic', 670, 900)

cv2.namedWindow('defpic', 0)

cv2.resizeWindow('defpic', 670, 900)

cv2.imshow('firstpic', img1)

cv2.imshow('targetpic',img2)

# cv2.imshow('img1', img_hsv1)

cv2.imshow('defpic', hsv_img1)

cv2.waitKey(0)

cv2.destroyAllWindows()

以下分别是原图像 目标图像 和 经过直方图规定化后的图像:

python直方图规定化_OpenCV python 彩色图像的直方图规定化相关推荐

  1. python车牌字符分割_OpenCV+Python识别车牌和字符分割的实现

    本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分 ...

  2. python视频人脸检测_OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  3. python 答题卡识别_opencv+python机读卡识别(初级版)

    最近在进一步学习Python,在网上发现有使用opencv进行机读卡识别的, 就根据大神的文章,跟着学习,自己写了一个机读卡识别, 文章一:opencv+python机读卡识别整合版 文章二:pyth ...

  4. python 答题卡识别_opencv+python机读卡识别整合版

    稍微整理了一下这个系列的一二三四章,可能看着更舒服吧--这个系列的解决方案不止一种,调参的方法也是各种各样,反正能够满足需求就极好了 1.预处理 这次的机读卡识别项目来源暑期培训,主要包括内容一张手机 ...

  5. python 答题卡识别_opencv+python机读卡识别(最终版)

    本文是对之前编写的机读卡进行完善, 只记录相关代码,不介绍具体编写流程, 具体流程:opencv+python机读卡识别(进阶版) 完善相关机读卡的适配,记录相关调试函数以及使用方法. # -*- c ...

  6. opencv python 识别视频水印_opencv+python实现视频实时质心读取

    利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...

  7. python仿真智能驾驶_opencv+python智能车道检测,助力无人驾驶

    近年来,基于人工智能的车道检测算法得到了广泛的研讨.与传统的基于特征的方法相比,许多方法表现出了优越的功能.但是,当使用具有应战性的图像时,其准确率通常仍在低80%或高90%之间,甚至更低. 准确牢靠 ...

  8. python opencv 录制视频_OpenCV Python 录制视频

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB.经过一番查找,终于找到了解决办法. 调用摄像头 调用摄像头作为本实验的基础是 ...

  9. python腐蚀膨胀代码_OpenCV+python实现膨胀和腐蚀的示例

    1,概念及原理: 膨胀(Dilating) (或) (1)将图像 A 与任意形状的内核 (B),通常为正方形或圆形,进行卷积. (2)内核 B 有一个可定义的 锚点, 通常定义为内核中心点. (3)进 ...

  10. python实现运动模糊图像_OpenCV+Python实现图像运动模糊和高斯模糊

    原标题:OpenCV+Python实现图像运动模糊和高斯模糊 运动模糊:由于相机和物体之间的相对运动造成的模糊,又称为动态模糊 OpenCV+Python实现运动模糊,主要用到的函数是cv2.filt ...

最新文章

  1. 蜗蜗 Linux内核芬妮下,Linux内核的整体架构
  2. 12W人编程能力暴增!网友:服气!选择比天赋更重要!
  3. 英飞凌AI电磁越野组浅析
  4. android zip解压缩
  5. Android 服务入门
  6. ubuntu 如何登录远程服务器_VSCode远程登录云服务器、树莓派实现在线调试代码...
  7. java记录登陆时间_Spring security如何实现记录用户登录时间功能
  8. PyTorch 1.0 中文文档:torch.utils.data
  9. 北京出台快递业价格行为规则 不得收取未予标明的费用
  10. Qt Supported Databases
  11. STL之priority_queue 感觉讲的不错!!!呵呵
  12. java jsessionid 会话_jsessionid 对JAVA WEB jsessionid的剖析
  13. java网络学习之 ssh 协议学习总结
  14. [离散数学]真值表法求主析、合取范式(Java实现)
  15. 【实用教程】本地blast使用及简单python脚本辅助
  16. WPS文字在线转换成Word
  17. ctfshow_萌新_萌新隐藏题
  18. FATFS文件系统复制文件
  19. 【CSDN|每日一练】吃!吃!吃!
  20. 2020-9-12 招银网络科技面经

热门文章

  1. java jsp乱码怎么解决_Java/JSP中文乱码问题解决心得
  2. Navicat15注册时报错 rsa public key not find
  3. 安装sas9.4版本sid过期问题
  4. 游戏UI-头像框制作
  5. linux解决蓝牙和网卡,完全用Deepin Linux娱乐、工作、学习(3)-- 无线网卡及蓝牙设备驱动篇...
  6. Java 实现同步的几种方式
  7. Jquery WeUI 复选框
  8. Windows桌面分享程序设计
  9. arcgis伪节点检查_ARCGIS 拓扑检查步骤与修正拓扑错误技巧
  10. JAVA开发工程师面试题shiro