Python知识:opencv实现的直方图
给定一幅彩色图片,画出三个通道的直方图。做出对比。
一、学习要点:
1)cv2.calcHist直方图产生函数
cv2.calcHist( images, channels, mask, histSize, ranges[, hist[, accumulate ]])
#计算直方图函数参数
- 第一个参数必须用方括号括起来,表示被计算的图像,可以是多幅。
- 第二个参数是用于计算直方图的通道,这里使用灰度图计算直方图,所以就直接使用第一个通道,多幅图像相当于多通道;
- 第三个参数是Mask,与原图维度相同,被计算的区域,1计算,0不计算,这里没有使用,所以用None。
- 第四个参数是histSize,表示这个直方图分成多少份(即多少个直方柱的数量)。
- 第五个参数是表示直方图中各个像素的值,[0.0, 256.0]表示直方图能表示像素值从0.0到256的像素。
2)cv2.normalize归一化函数
# Normalize the value to fall below 255, to fit in image 'h'
cv2.normalize(source_array, destination_array, alpha, beta, normalization_type)
- source_array 是要归一化的输入图像对应的数组,
- destination_array 是归一化的输出图像对应的数组,
- alpha 表示下限边界值,
- beta 表示上限边界值,并且
- normalization_type 表示规范化的类型【 cv2.NORM_MINMAX,】。
3) pts = np.column_stack函数
np.column_stack((bins, hist))
将两个列向量合并后,拼成矩阵。
pts = np.column_stack((bins, hist))
4) cv2.polylines函数
cv.polylines(img,pts=pts,isClosed=True, color=(255, 255, 255), thickness=3)
参数如下:
img:要在上面画多边形的图像
pts:包含多边形上顶点的数组
isClosed:标志,决定所绘制的多边形是否闭合。若为 True ,则画若干个闭合多边形;若为 False ,则画一条连接所有点的折线
color:多边形颜色
thickness:多边形线的粗细
lineType:多边形线的类型
shift:坐标精确到小数点后第几位
二、代码部分
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# .Data:.2019/3/24
import cv2
import numpy as npimg = cv2.imread('D001.jpg')
h = np.zeros((300, 256, 3)) # image to draw histogrambins = np.arange(256).reshape(256, 1) # Number of bins, since 256 colors, we need 256 bins
color = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]for ch, col in enumerate(color):hist_item = cv2.calcHist([img], [ch], None, [256], [0, 256]) # Calculates the histogramcv2.normalize(hist_item, hist_item, 0, 255,cv2.NORM_MINMAX) # Normalize the value to fall below 255, to fit in image 'h'hist = np.int32(np.around(hist_item))pts = np.column_stack((bins, hist)) # stack bins and hist, ie [[0,h0],[1,h1]....,[255,h255]]cv2.polylines(h, [pts], False, col)h = np.flipud(h) # You will need to flip the image verticallycv2.imshow('colorhist', h)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、结果输出
输出BGR的三个通道直方图。
Python知识:opencv实现的直方图相关推荐
- 使用Python,OpenCV计算图像直方图(cv2.calcHist)
使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...
- Python,OpenCV进行直方图反投影
Python,OpenCV进行直方图反投影 1. 效果图 2. 源码 参考 这篇博客将介绍Python,OpenCV中的直方图反投影.直方图反投影用于图像分割或在图像中查找感兴趣的对象. 简单地说,它 ...
- 使用Python,Opencv进行二维直方图的计算及绘制
使用Python,Opencv进行二维直方图的计算及绘制 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算 ...
- opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现
本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...
- python 灰度直方图_python3+opencv 使用灰度直方图来判断图片的亮暗操作
1.如何让计算机自动判断一张图是否偏暗?或是判断一张图是否是处于夜晚?我们可以先把图片转换为灰度图,然后根据灰度值的分布来判断,如: 我们可以从上图看到,晚上的图片的灰度值是集中在前段的,如0~30多 ...
- 【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法
[Python OpenCV]图像直方图 calcHist方法 equalizeHist方法 (一)图像直方图 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图).所谓直方 ...
- Python,OpenCV直方图均衡化以提高图像对比度
Python,OpenCV直方图均衡化以提高图像对比度 1. 效果图 2. 原理 2.1 直方图均衡化应用 2.2 直方图均衡化分类 3. 源代码 参考 这篇博客将介绍直方图均衡化(全局 & ...
- 使用Python,OpenCV,本地二进制模式(LBP)进行人脸识别
使用Python,OpenCV与本地二进制模式(LBP)进行人脸识别 1. 效果图 2. 原理及步骤 2.1 原理 2.2 步骤 3. 源码 参考 在深度学习和暹罗网络之前,面部识别算法依赖于特征提取 ...
- Python,OpenCV基于支持向量机SVM的手写数字OCR
Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...
- 使用Python,OpenCV和Scikit-Image检测低对比度图像
使用Python,OpenCV和Scikit-Image检测低对比度图像 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV和Scikit-Image检测低对 ...
最新文章
- 图论 ---- CF1495D .BFS Trees(图论最短路生成树+枚举计数+树的层次性)
- 打马赛克就安全了吗?AI消除马赛克,GitHub开源项目上线三天收获近7000星
- PyQt5 笔记6 -- 对话框(QDialog)
- Hasor【付诸实践 01】低代码框架 DataQL 聚合查询引擎 SQL执行器报错 Query dialect missing 原因分析及解决(针对GreenPlum数据库)
- c++ 多线程 垃圾回收器_JavaSE基础代码(3)--JavaSE程序入口,JDK,JRE,JVM垃圾回收器的关系与作用...
- c语言 统计数量用count_c语言中统计重复数字次数 c语言问题 统计不同数字的个数...
- python input函数无法输入字符串_python input输入函数
- SSH框架下 Proxool 连接池配置
- 【笔记】MySQL 根据出生日期计算当前年龄
- 爬虫中proxies小分享
- 【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
- excel按条件选择工作表_在Excel工作表中选择“实际使用范围”
- jQuery的jsTree入门使用
- 黑科技时代,不了解这些你就OUT了
- python选择哪个版本-Python下载哪个版本比较好?
- DCS是分布式控制系统的英文缩写(Distributed Control System)
- windows 防止屏保锁屏脚本工具
- 什么是智慧社区 智慧社区解决方案概括
- Python调用淘宝ip库API实现地址显示
- 捷信消费金融十年:巨轮转向,海阔天空