当前位置: 首页 > news >正文

Python Opencv实践 - 直方图显示

import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltimg = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
print(img.shape)#图像直方图计算
#cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)
#images:原图像(图像格式为 uint8 或 float32)。当传入函数时应该 用中括号 [] 括起来,例如:[img]。
#channels:同样需要用中括号括起来,它会告诉函数我们要统计那幅图 像的直方图。如果输入图像是灰度图,它的值就是 [0];如果是彩色图像 的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。
#mask: 掩模图像。要统计整幅图像的直方图就把它设为 None。但是如 果你想统计图像某一部分的直方图的话,你就需要制作一个掩模图像,并 使用它。
#histSize:BIN 的数目。也应该用中括号括起来,例如:[256]。
#ranges: 像素值范围,通常为 [0,256]
#hist:是一个 256x1 的数组作为返回值,每一个值代表了与次灰度值对应的像素点数目。
#accumulate:是一个布尔值,用来表示直方图是否叠加。
#参考资料:https://blog.csdn.net/yukinoai/article/details/87900860
#1. mask为None,对整幅图计算直方图
hist_b = cv.calcHist(img, [0], None, [256], [0,256])
hist_g = cv.calcHist(img, [1], None, [256], [0,256])
hist_r = cv.calcHist(img, [2], None, [256], [0,256])#2. 使用mask计算局部图像直方图
# mask的使用:https://www.coder.work/article/2087445
mask = np.zeros(img.shape[:2], np.uint8)
mask[100:200,100:200]=255
hist_mask_b = cv.calcHist([img], [0], mask, [256], [0,256])
hist_mask_g = cv.calcHist([img], [1], mask, [256], [0,256])
hist_mask_r = cv.calcHist([img], [2], mask, [256], [0,256])#显示图像
fig,axes = plt.subplots(nrows=3, ncols=1, figsize=(10,10), dpi=100)
axes[0].imshow(img[:,:,::-1])
axes[0].set_title("Original")
axes[1].set_title("Histogram")
axes[1].plot(hist_b, color='b')
axes[1].plot(hist_g, color='g')
axes[1].plot(hist_r, color='r')
axes[2].plot(hist_mask_b, color='b')
axes[2].plot(hist_mask_g, color='g')
axes[2].plot(hist_mask_r, color='r')

 

 

http://www.lryc.cn/news/135409.html

相关文章:

  • 2分钟搭建自己的GPT网站
  • deepdiff比较两个json文件数据差异性
  • 文件内容搜索工具 - Python实现
  • vue静态html加载外部组件
  • WebSocket 中的心跳是什么,有什么作用?
  • Android类加载机制
  • 微信小程序列表加载更多
  • 数据库知识
  • VUE 目录介绍
  • Selenium的基本使用
  • 数据结构-----树的易错点
  • 写之前的项目关于使用git remote -v 找不到项目地址的解决方案
  • STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片
  • 直播平台源码搭建协议讲解篇:传输控制协议TCP
  • 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
  • 基于Jenkins自动打包并部署Tomcat环境
  • 开利网络受邀参与御盛马术庄园发展专委会主题会议
  • 【HarmonyOS北向开发】-05 ArkTS开发语言-ArkTS开发实践
  • 无类别域间路由(Classless Inter-Domain Routing, CIDR):理解IP网络和子网划分(传统的IP地址类ABCDE:分类网络)
  • 合宙Air724UG LuatOS-Air LVGL API-概念
  • 【C语言】位段,枚举和联合体详解
  • python学习-文件管理
  • 【LeetCode 算法】Number of Ways of Cutting a Pizza 切披萨的方案数-记忆化
  • 机器视觉之光流
  • C++:list使用以及模拟实现
  • 深度学习基础知识-pytorch数据基本操作
  • Springboot使用QueryDsl实现融合数据查询
  • 解决方案 | 电子签打通消费电子行业数智化经营通路
  • JVM理论知识
  • idea - 报错 Mybatis提示Tag name expected的问题< 小于号 无法识别