返回顶部
首页 > 资讯 > 后端开发 > Python >如何深入了解Python二维直方图
  • 511
分享到

如何深入了解Python二维直方图

2023-06-22 05:06:36 511人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关如何深入了解python二维直方图,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言只统计像素的灰度值这一特征,可将其成为一维直方图。二维直方图可以统

本篇文章给大家分享的是有关如何深入了解python二维直方图,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

只统计像素的灰度值这一特征,可将其成为一维直方图。二维直方图可以统计像素的色相和饱和度,用于查找图像的颜色直方图。

一、OpenCV中的二维直方图

OpenCV仍然使用cv2.calcHist()函数来查找图像的颜色直方图,只是在指定参数时与之前有所区别。

cv2.calcHist()函数的基本格式如下:

hist =cv2.calcHist(image, channels, mask, histSize, ranges)

image参数指定的原图像应从BGR色彩空间转换为HSV色彩空间, 实际参数需要用方括号括起来

channels参数设置为[0,1]时, 表示同时处理色相和饱和度

histSize参数设置BINS值为[180,256]时, 表示色相为180, 饱和度为256

ranges参数设置为[0,180,0,256]时, 表示色相的取值范围为[0,180], 饱和度的取值范围为[0,2565]

cv2.calcHist()函数返回的颜色直方图可以直接使用cv2.show()函数显示。

import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('XIAN.jpg')cv2.namedWindow('orininal', cv2.WINDOW_NORMAL)cv2.imshow('orininal', img)img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)hist = cv2.calcHist([img2], [0, 1], None, [180, 256], [0,180,0,256])cv2.namedWindow('2DHist', cv2.WINDOW_NORMAL)cv2.imshow('2DHist', hist)cv2.waiTKEy(0)cv2.destroyAllwindows()plt.imshow(hist, interpolation = 'nearest')    # 绘制颜色直方图plt.show()                                     # 显示颜色直方图

如何深入了解Python二维直方图

cv2.calcHist()函数返回的颜色直方图是一个大小为180*256的二维数组,用cv2.imshow()函数显示时是一副灰度图像,不能直接显示出颜色的分布情况。

可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色的二维直方图。

如何深入了解Python二维直方图

二、Numpy中的二维直方图

Numpy的np.histogram2d()函数用于计算二维直方图,其基本格式如下:

hist, xedges, yedges = np.histogram2d(x, y, bins, range)

hist为返回的直方图

xedges为返回的x的直方图的BINS边界值

yedges为返回的y的直方图的BINS边界值

xy为原图对应通道转换成的一维数组

bins为BINS的值, 如[180,256]

range为像素范围, 格式为[[0, 180],[0, 256]]

img = cv2.imread('building.jpg')cv2.imshow('orininal', img)img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)h, s, v = cv2.split(img2)hist, x, y = np.histogram2d(h.ravel(), s.ravel(), [180, 256], [[0, 180],[0, 256]])cv2.imshow('2DHist', hist)cv2.waitKey(0)cv2.destroyAllWindows()plt.imshow(hist, interpolation = 'nearest')plt.show()

如何深入了解Python二维直方图

可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色的二维直方图。

如何深入了解Python二维直方图

三、直方图示例

1、使用Numpy函数计算直方图

import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('home.jpg')plt.figure(figsize = (25,25))imgrgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)        plt.subplot(2, 2, 1)                                  plt.title('Original')plt.axis('off')plt.imshow(imgrgb)histb, e1 = np.histogram(img[0].ravel(), 256, [0, 255])   #计算B通道直方图histg, e2 = np.histogram(img[1].ravel(), 256, [0, 255])   #计算G通道直方图histr, e3 = np.histogram(img[2].ravel(), 256, [0, 255])   #计算R通道直方图plt.subplot(2, 2, 2)plt.plot(histb, color = 'b')              plt.plot(histg, color = 'g')              plt.plot(histr, color = 'r')              plt.title('Hist')img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)           #转换色彩空间为HSVh, s, v = cv2.split(img2)hist, x, y=np.histogram2d(h.ravel(), s.ravel(), [180, 256], [[0, 180], [0, 256]])        #计算颜色直方图plt.subplot(2, 2, 3)plt.title('2Dhist')                                 #设置子图窗口标题plt.imshow(hist, interpolation = 'nearest',cmap = 'gray')                                    #绘制颜色直方图plt.show()                                          #显示颜色直方图

如何深入了解Python二维直方图

2、使用OpenCV函数计算直方图

# 2.使用OpenCV函数计算直方图import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('flower.jpg')plt.figure(figsize = (25,25))imgrgb=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)         plt.subplot(2, 2, 1)                           plt.imshow(imgrgb)plt.title('Original')                         plt.axis('off')histb = cv2.calcHist([img], [0], None, [256], [0,255])   #计算B通道直方图histg = cv2.calcHist([img], [1], None, [256], [0,255])   #计算G通道直方图histr = cv2.calcHist([img], [2], None, [256], [0,255])   #计算R通道直方图plt.subplot(2, 2, 2)plt.plot(histb, color= 'b') plt.plot(histg, color= 'g') plt.plot(histr, color= 'r')  plt.title('Hist') img2=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)hist = cv2.calcHist([img2], [0, 1], None, [180, 256], [0, 180, 0, 256])   plt.subplot(2, 2, 3)plt.title('2Dhist')                                 #设置子图窗口标题plt.imshow(hist,interpolation = 'nearest',cmap = 'gray')                                    #绘制颜色直方图plt.show()                                          #显示颜色直方图

如何深入了解Python二维直方图

以上就是如何深入了解Python二维直方图,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

--结束END--

本文标题: 如何深入了解Python二维直方图

本文链接: https://lsjlt.com/news/302777.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何深入了解Python二维直方图
    本篇文章给大家分享的是有关如何深入了解Python二维直方图,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言只统计像素的灰度值这一特征,可将其成为一维直方图。二维直方图可以统...
    99+
    2023-06-22
  • 深入了解Python二维直方图
    目录前言一、OpenCV中的二维直方图二、Numpy中的二维直方图三、直方图示例1、使用Numpy函数计算直方图2、使用OpenCV函数计算直方图前言 只统计像素的灰度值这一特征,可...
    99+
    2024-04-02
  • 深入了解Vue使用vue-qr生成二维码的方法
    目录npm下载步骤(1)导入(2)vue-qr参数 示例总结 “二维码”的英文是“QR Code”,“QR”是“Quick Response”的缩写,反映出这种二维码具有“超高速识读...
    99+
    2024-04-02
  • 深入了解Python如何操作MongoDB
    目录前言1. 准备工作2. 连接MongoDB3. 指定数据库4. 指定集合5. 插入数据6. 查询7. 计数8. 排序9. 偏移10. 更新11. 删除12. 其他操作前言 Mon...
    99+
    2024-04-02
  • 深入了解Python Flask框架之蓝图
    随着Flask项目越来越复杂,把所有视图函数放在一个应用文件中会很不方便我们管理,所以需要对程序进行模块化的处理。Flask内置了一个模块化处理的类——Blueprint蓝图。 Bl...
    99+
    2024-04-02
  • Matlab实现二维散点主方向直方图的绘制详解
    目录工具函数基本使用多组数据修改配色精细修饰简简单单画个二维散点图主方向上的直方图: 工具函数 输入nx2大小的数组,返回以下四个图形对象: H1: ‘数据点&rsqu...
    99+
    2024-04-02
  • Python 深入了解opencv图像分割算法
    本文主要是基于Python Opencv 实现的图像分割,其中使用到的opencv的函数有: 使用 OpenCV 函数 cv::filter2D 执行一些拉普拉斯滤波以进行...
    99+
    2024-04-02
  • 如何用Python生成二维码、解析二维码
    目录楔子生成二维码qrcodeMyQR解析二维码楔子 二维码在我们的生活中可以说是必不可少的,不单单是手机支付、其它很多地方也都需要扫描二维码。那么下面我们就来看看如何使用pyth...
    99+
    2024-04-02
  • vue看不了二维码如何解决
    这篇文章主要介绍了vue看不了二维码如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue看不了二维码如何解决文章都会有所收获,下面我们一起来看看吧。一、问题现象通过Vue.js开发的页面,使用微信或其他...
    99+
    2023-07-06
  • python OpenCV图像直方图如何处理
    这篇“python OpenCV图像直方图如何处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python&nb...
    99+
    2023-07-02
  • 深入了解python基于tkinter写的画图项目
    # coding=utf-8 from tkinter import * from tkinter.filedialog import * from tkinter.colorc...
    99+
    2024-04-02
  • Python 语法的思维导图:深入理解代码结构
    Python 凭借其简单易读的语法,广泛应用于广泛的领域中。掌握 Python 语法的基础结构至关重要,既可以提高编程效率,又能深入理解代码的运作方式。为此,本文提供了一个全面的思维导图,详细阐述了 Python 语法的各个方面。 变量...
    99+
    2024-02-19
    Python 语法 思维导图 代码结构 变量 数据类型 运算符 控制流 函数
  • 如何深入了解Redis中的Codis
    这篇文章给大家介绍如何深入了解Redis中的Codis,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。场景在大数据高并发场景下,使用单个redis实例,即使redis的性能再高,也会变的...
    99+
    2024-04-02
  • Python如何生成高清的二维码图片?
    随着移动互联网的发展,二维码已经逐渐成为人们生活中必不可少的工具。无论是支付、商家推广还是个人名片,都可以通过二维码来方便地实现。那么,如何使用Python生成高清的二维码图片呢? 首先,我们需要安装一个名为qrcode的Python库,...
    99+
    2023-09-11
    二维码 大数据 数组
  • Python 编程技巧:如何在二维码中嵌入自定义图像?
    二维码是一种常用的二进制编码方式,可以将信息转换为黑白方块图案,以便通过扫描二维码来获取信息。在实际应用中,我们经常需要将二维码与自定义图像相结合,以增加二维码的美观度和可识别度。本文将介绍如何使用 Python 的 qrcode 库和 ...
    99+
    2023-08-27
    二维码 bash npm
  • Redis中如何深入了解Makefile文件
    这篇文章的内容主要围绕Redis中如何深入了解Makefile文件进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!M...
    99+
    2024-04-02
  • 如何深入了解JVM内存结构
    如何深入了解JVM内存结构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。你对JVM内存结构是否熟悉,这里向大家描述一下,主要包括类装载子系统,方法区,PC寄存器...
    99+
    2023-06-17
  • 如何利用Python技术生成二维码?快来了解一下!
    在现代社会,二维码已经成为了我们生活中必不可少的一部分。它可以用于各种场合,例如商业广告、支付、活动签到等等。而Python作为一种高效的编程语言,也可以利用其强大的图像处理能力来生成二维码。本文将介绍如何利用Python技术生成二维码。 ...
    99+
    2023-10-13
    日志 开发技术 二维码
  • 一文带你深入了解Python中的二次移动平均法
    目录二次移动平均法逻辑Python代码实现第二种实现二次移动平均法的方式第三种卷积实现二次移动平均法二次移动平均法的应用场景二次移动平均法逻辑 二次移动平均法是一种重要的数学工具,用...
    99+
    2023-02-01
    Python二次移动平均法 Python 平均法
  • 如何深入了解JavaScript中的for循环
    本篇文章给大家分享的是有关如何深入了解JavaScript中的for循环,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在ECMAScript5...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作