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.mzph.cn/news/50047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言刷题(16)

第一题 第二题 注意 Printf()可以直接在里面放字符指针进行打印 第三题 第四题 第五题 第六题 第七题 或者

edge浏览器使用jupyter notebook删除快捷键没有用?

按快捷键删除没有用,出现一个黑色方框,里面的数字不断在加 解决方法: 在扩展中将Global Speed控制视频速度的插件关掉,或者将控制速度的快捷键改一下 可以在浏览器设置 》扩展 》管理扩展 里面关掉该插件 可以在Global Speed 的…

论文解读:Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions

发布时间:2022.4.4 (2021发布,进过多次修订) 论文地址:https://arxiv.org/pdf/2112.08088.pdf 项目地址:https://github.com/wenyyu/Image-Adaptive-YOLO 虽然基于深度学习的目标检测方法在传统数据集上取得了很好的结果&#xf…

C++设计模式之适配器模式

一、适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类所期望的接口,以便两个类能够协同工作。 适配器模式可以解决现有类接口与所需接口不匹配的问题,使得原本因接口不…

Mesa 23.2 开源图形栈现已可供下载

导读作为 Mesa 23 系列的第二个重要版本,Mesa 23.2 开源图形栈现已可供下载,它为 AMD GPU 的 RADV Vulkan 驱动程序带来了新功能,改进了 Linux 游戏,并新增了 Asahi 功能。 Mesa 23.2 的亮点包括 Asahi 上的 OpenGL 3.1 和 OpenGL…

Springboot 实践(8)springboot集成Oauth2.0授权包,对接spring security接口

此文之前,项目已经添加了数据库DAO服务接口、资源访问目录、以及数据访问的html页面,同时项目集成了spring security,并替换了登录授权页面;但是,系统用户存储代码之中,而且只注册了admin和user两个用户。在…

3DXML在线查看与转换工具

3DXML 由软件巨头达索系统推出,是 3D 设计和工程中的关键文件格式,提供了封装和共享 3D 数据的系统方法。 为了将简单性与丰富的数据表示相结合,3DXML 在与 STEP 等其他文件格式相比时展现出其独特的优势,特别是在数据丰富性和紧凑…

DAY24

题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…

GPT4模型架构的泄漏与分析

迄今为止,GPT4 模型是突破性的模型,可以免费或通过其商业门户(供公开测试版使用)向公众提供。它为许多企业家激发了新的项目想法和用例,但对参数数量和模型的保密却扼杀了所有押注于第一个 1 万亿参数模型到 100 万亿参…

视频监控平台EasyCVR视频汇聚平台档案库房图书馆等可视化管理平台应用场景全面解析

档案是一种特殊的记录留存文献,具有珍贵的精神财富价值。它们是人类活动的真实见证,是辉煌时刻的历史记录,在社会发展和经济建设中发挥着至关重要的作用。 随着市场经济的不断发展和人类文明的飞速推进,档案的价值和作用变得越来…

K8S如何部署Redis(单机、集群)

在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多…

flutter TARGET_SDK_VERSION和android 13

config.gradle ext{SDK_VERSION 33MIN_SDK_VERSION 23TARGET_SDK_VERSION 33COMPILE_SDK_VERSION SDK_VERSIONBUILD_TOOL_VERSION "33.0.0"//兼容库版本SUPPORT_LIB_VERSION "33.0.0"}app/build.gradle里面的 defaultConfig {// TODO: Specify your…

C++设计模式之桥接模式

文章目录 一、桥接模式二、std::error_code与设计模式(桥接模式)参考 一、桥接模式 在C中,桥接模式通常涉及以下几个角色: 抽象类接口(Abstraction):定义抽象部分的接口,并维护一个…

DETRs with Collaborative Hybrid Assignments Training论文笔记

Title:[DETRs with Collaborative Hybrid Assignments Training Code 文章目录 1. Motivation2. one to one VS one to many3. Method(1)Encoder feature learning(2)Decoder attention learning 1. Motivation 当前…

【C#学习笔记】数据类中常用委托及接口——以List<T>为例

文章目录 List\<T\>/LinkedList \<T\>为什么是神&#xff1f;&#xff08;泛型为什么是神&#xff09;一些常见&#xff0c;通用的委托和接口ComparisonEnumerator List<T>/LinkedList <T>为什么是神&#xff1f;&#xff08;泛型为什么是神&#xff0…

打印技巧——word中A4排版打印成A3双面对折翻页

在进行会议文件打印时&#xff0c;我们常会遇到需要将A4排版的文件&#xff0c;在A3纸张上进行双面对折翻页打印&#xff0c;本文对设置方式进行介绍&#xff1a; 1、在【布局】选项卡中&#xff0c;点击右下角小箭头&#xff0c;打开页面设置选项卡 1.1在【页边距】中将纸张…

发力服务业务,龙湖集团半程领跑赢在“智慧”

成立三十载&#xff0c;龙湖集团一直是房地产行业“特立独行”的存在。 一方面&#xff0c;龙湖在对外战略方面长期量入为出&#xff0c;从不背上过重的“包袱”。 不久前&#xff0c;一则消息引发市场关注&#xff1a;龙湖集团提前偿还17亿元债务&#xff0c;已基本全部还清…

Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

文章目录 先分析代码&#xff0c;从代码中了解Vector3 moveDirection new Vector3(10f, 0f, 100f);合法吗Vector3 moveDirection new Vector3 (xf,yf,zf)不是用来表示三维坐标的怎么表示在某个方向的位移 先分析代码&#xff0c;从代码中了解 这段代码是一个在游戏开发中常见…

基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天

第四阶段提升 时 间&#xff1a;2023年8月23日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Jenkins部署docker、PHP环境 目录 一、环境部署 &#xff08;一&#xff09;实验环境&#xff0c;服务器设置 &#xff08;二&#xff09;所有主机关闭防火墙和selinu…

【案例】登录注册

<template><div class"loginhome"><Header :butShow"butShow"></Header><div class"formdiv"><div style"text-align:center;padding:10px;"><h3>你好登录账号{{ stauts 3? 注册:登录 }}…