我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python+OpenCV图像处理之直方图统计的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python+OpenCV图像处理之直方图统计的示例分析

这篇文章主要为大家展示了“Python+OpenCV图像处理之直方图统计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python+OpenCV图像处理之直方图统计的示例分析”这篇文章吧。

1. 直方图概述

(1)基本概念

直方图就是对图像的另外一种解释,它描述了整幅图像的灰度分布。直方图的 x 轴代表灰度值(0~255),y 轴代表图片中同一种灰度值的像素点的数目,所以通过直方图我们可以对图像的亮度、灰度分布、对比度等有了一个直观的认识

(2)直方图中的术语

BINS

前面说到,直方图中的 x 轴表示的是灰度值,一幅灰度图的灰度等级有 256 级,所以我们是否需要将每一个等级标注在一条轴上呢?或者如果我们需要的不是每一个灰度值的分布,而是一个范围内的灰度分布呢?所以我们将每一个需要的灰度值范围称为一个 BIN,即所有的灰度等级被分为几个小组,每一个小组是一个 BIN

DIMS

代表的是我们收集的图像的参数的数目,直方图我们如果只收集灰度值一个参数,那么该参数的值就是1

RANGE

代表统计的灰度值的范围,一般的范围是[0-255]

2. 直方图绘制

(1)读取图像信息

在计算机视觉系列的文章中第一件事就是读取图像信息:

"""Author:XiaoMadate:2021/10/24"""#调用需要的包import cv2import matplotlib.pyplot as plt img0 = cv2.imread('E:\From Zhihu\For the desk\cvseven.jpeg')img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)     #转化为灰度图h, w = img1.shape[:2]print(h, w)cv2.namedWindow("W0")cv2.imshow("W0", img1)cv2.waitKey(delay = 0)

图像信息如下:

419 636 

Python+OpenCV图像处理之直方图统计的示例分析

(2)绘制直方图

绘制直方图使用的函数如下:

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

images:原图

channels:指定通道 [0]代表灰度图,如果读入的图像不是灰度图,该值可以是[0],[1],[2]分别代表通道 B,G,R

mask:掩码图像,进行整张图的绘制时为 None

histSize:BIN 的数量

ranges:像素值范围

accumulate:累计标识,一般可以省略

灰度图的直方图 

#绘制直方图hist = cv2.calcHist([img1], [0], None, [256], [0, 255])plt.plot(hist, color = 'lime', label = '直方图', linestyle = '--')plt.legend()plt.savefig('E:\From Zhihu\For the desk\cvseven1.jpeg')plt.show()

Python+OpenCV图像处理之直方图统计的示例分析

可以看出这幅灰度图中亮度较高的像素点还是占多数的,即整体亮度较高

彩色图直方图

读入彩色图像,并对某一个通道进行直方图绘制

"""Author:XiaoMadate:2021/10/24"""#调用需要的包import cv2import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'SimHei'       #将全局中文字体改为黑体 img0 = cv2.imread('E:\From Zhihu\For the desk\cvseven.jpeg')img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)h, w = img1.shape[:2]print(h, w)cv2.namedWindow("W0")cv2.imshow("W0", img0)cv2.waitKey(delay = 0) #绘制直方图hist = cv2.calcHist([img0], [0], None, [256], [0, 255])plt.plot(hist, color = 'lime', label = '蓝色通道直方图', linestyle = '--', alpha = 1)plt.legend()plt.savefig('E:\From Zhihu\For the desk\cvseven1.jpeg')plt.show()

Python+OpenCV图像处理之直方图统计的示例分析

上图就是对蓝色通道绘制的直方图 

3. 掩膜直方图

(1)基本概念

如果我们不需要整幅图像中的直方图,而是某个区域的直方图,我们只需要绘制一幅图,将需要统计的部分设置为白色,不需要统计的部分设置为黑色,就构成了一幅掩膜图像

(2)实现代码

得到掩模图

##得到掩膜图mask = np.zeros(img0.shape, np.uint8)    #将每一个像素点设置为0,就是黑色mask[109:309, 212:412] = 255             #选取特定区域设置为白色img0_1 = cv2.bitwise_and(img0, mask)     #图像与操作得到掩膜图cv2.namedWindow("W1")cv2.imshow("W1", img0_1)cv2.waitKey(delay = 0)

Python+OpenCV图像处理之直方图统计的示例分析

绘制掩膜直方图 

#绘制掩膜直方图##得到掩膜图mask = np.zeros(img1.shape, np.uint8)    #将每一个像素点设置为0,就是黑色mask[109:309, 212:412] = 255             #选取特定区域设置为白色img1_1 = cv2.bitwise_and(img1, mask)     #图像与操作得到掩膜图cv2.namedWindow("W1")cv2.imshow("W1", img1_1)cv2.waitKey(delay = 0)##绘制掩膜直方图和部分图像直方图hist1 = cv2.calcHist([img1], [0], mask, [256], [0, 255])         #掩膜图直方图,参数需要修改hist2 = cv2.calcHist([img1], [0], None, [256], [0,255])plt.plot(hist1, color = 'b', label = '掩膜直方图', linestyle = '--')plt.plot(hist2, color = 'r', label = '原图直方图', linestyle = '-.')plt.legend()plt.savefig('E:\From Zhihu\For the desk\cvseven2.jpeg')plt.show()

得到的图像如下:

Python+OpenCV图像处理之直方图统计的示例分析

4. H-S 直方图

(1)基本概念

 H(Hue) - S(Saturation) 直方图,即色调 - 饱和度直方图

绘制该直方图需要将源RGB图像转化到 HSV (色调、饱和度、亮度)颜色空间中去

img0_2 = cv2.cvtColor(img0, cv2.COLOR_BGR2HSV) #将 RGB 空间转化为 HSV 空间cv2.namedWindow("W2")cv2.imshow("W2", img0_2)cv2.waitKey(delay = 0)

Python+OpenCV图像处理之直方图统计的示例分析

(2)绘制二维H-S直方图

此处参考:OpenCV 官网

##绘制H-S直方图hist3 = cv2.calcHist ([img0_2], [0, 1], None , [180, 256], [0, 180, 0, 256])#官网给出的解释:channel = [0,1] 因为我们需要同时处理 H 和 S 平面;bins = [180,256] H 平面为 180,S 平面为 256;range = [0,180,0,256] 色调值介于 0 和 180 之间,饱和度介于 0 和 256 之间plt.imshow(hist3)plt.savefig('E:\From Zhihu\For the desk\cvseven3.jpeg')plt.show()

得到的图像如下:

Python+OpenCV图像处理之直方图统计的示例分析

上图中的 X 轴代表S(饱和度),Y轴代表H(色调) 

该图中的峰值主要分布在 S 在(0-50)之间 H在(20-80),至于为什么峰值较少,个人猜测是由于原图中的色彩变化不明显,导致没办法绘制出过多过明显的峰值

以上是“Python+OpenCV图像处理之直方图统计的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python+OpenCV图像处理之直方图统计的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python+OpenCV图像处理之直方图统计的示例分析

这篇文章主要为大家展示了“Python+OpenCV图像处理之直方图统计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python+OpenCV图像处理之直方图统计的示例分析”这篇文章
2023-06-22

python opencv图像处理基本操作的示例分析

本篇文章给大家分享的是有关python opencv图像处理基本操作的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。①读取图像②显示图像该函数中,name是显示窗口的名
2023-06-25

Python OpenCV图像识别的示例分析

小编给大家分享一下Python OpenCV图像识别的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、人脸识别主要有以下两种实现方法:1、哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法;实现步骤:创建H
2023-06-29

Python中图像量化处理的示例分析

小编给大家分享一下Python中图像量化处理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.图像量化处理原理量化(Quantization)旨在将图像
2023-06-29

Python图片处理之图片裁剪的示例分析

小编给大家分享一下Python图片处理之图片裁剪的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、操作流程首先会吧?1.有张照片这是网上随便找的一张照片,自行保存测试2.看看照片运行代码,其中show_img函数
2023-06-15

使用Matlab处理图像的示例分析

小编给大家分享一下使用Matlab处理图像的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!小伙伴们可能会遇到这样一个情况,填写某些信息的时候不仅需要对图片
2023-06-19

Python中图像点运算与灰度化处理的示例分析

这篇文章主要介绍了Python中图像点运算与灰度化处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.图像点运算概念图像点运算(Point Operation)指
2023-06-29

Python中图片采样处理的示例分析

这篇文章给大家分享的是有关Python中图片采样处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.图像采样处理原理图像采样(Image Sampling)处理是将一幅连续图像在空间上分割成M&tim
2023-06-29

Python赋能计算机视觉:探索图像处理与分析的全新境界

Python凭借其强大的库和丰富的图像处理工具,为计算机视觉领域带来了无限可能。本文将探索Python在图像处理和分析中的应用,揭示其在计算机视觉领域的强大优势。
Python赋能计算机视觉:探索图像处理与分析的全新境界
2024-02-07

深入Python计算机视觉世界:图像处理与分析的终极指南

计算机视觉是人工智能的一个分支领域,它旨在让计算机像人类一样理解和分析视觉信息。Python因其丰富的库和简单的语法而成为计算机视觉的热门选择。本文将深入探讨Python计算机视觉的世界,从图像处理到图像分析,为您提供一路上的指南。
深入Python计算机视觉世界:图像处理与分析的终极指南
2024-02-07

Python计算机视觉入门漫谈:图像处理和分析的初学者指南

计算机视觉作为人工智能的核心技术之一,涉及图像处理、图像识别、物体检测等多个领域。本文作为Python计算机视觉入门教程,将指导初学者如何使用Python语言实现图像处理和分析。
Python计算机视觉入门漫谈:图像处理和分析的初学者指南
2024-02-07

Python计算机视觉算法详解:揭秘图像处理和分析背后的奥秘

Python计算机视觉算法揭开了图像处理和分析的神秘面纱,演示代码带领我们探索这些算法的奥秘。
Python计算机视觉算法详解:揭秘图像处理和分析背后的奥秘
2024-02-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录