计算机视觉——Opencv(图像直方图与掩膜)
图像直方图直方图是图像中像素强度分布的图形表达方式。直方图的作用例如视频中通过标记帧和帧之间显著的边缘和颜色的统计变化来检测视频中场景的变换。灰度值在0 - 255范围之间总共 256 个值可以将我们的范围划分为子部分称为binsMatplotlib 直接绘制灰度直方图import cv2 import matplotlib.pyplot as plt phone cv2.imread(rC:\Users\LEGION\Desktop\OIP-C.webp,cv2.IMREAD_GRAYSCALE)#将图像转换为一维数组 a phone.ravel() #这里使用了numpy的ravel函数将多维数组拉成一维数组。 #绘制直方图 plt.hist(a,bins256) #使用matplotlib 的hist函数绘制直方图。# 参数解释: #-a:一维数组即图像的像素值组成的数组。 #-bins256:指定直方图的条数即灰度级的数量。 plt.show()数组拉平ravel()函数作用是将多维数组转换为一维数组例如一张大小为 400×500 的灰度图经过ravel()处理后会变成一个长度为 200000 的一维数组数组中的每个元素对应图像的一个像素值这是 Matplotlibhist函数的输入要求。plt.hist()函数的两个核心参数分别是a待统计的一维数组和bins256指定直方图的区间数量对应灰度图像的 256 个灰度级。运行代码后我们会得到一张从 0 到 255 的直方图横坐标是像素的灰度值纵坐标是对应灰度值在图像中出现的次数运行结果使用calcHist函数绘制灰度直方图import cv2 import matplotlib.pyplot as plt phone_hist cv2.calcHist( [phone], [0], None, [16], [0,256]) plt.plot(phone_hist)#使用calcHist的值绘制曲线图 plt.show()参数解析[phone]输入图像必须以列表形式传入[0]通道索引同样是要以列表的形式传入灰度图像只有一个通道索引为0。如果是彩色图像我们会在后续分别传入[0]、[1]、[2]对应蓝、绿、红三个通道。None掩膜图像此处为None表示计算整个图像的直方图[16]直方图的区间数量bins此处将256个灰度级合并为16个区间[0, 256]像素值的取值范围这是一个左闭右开区间。运行结果彩色图像直方图绘制import cv2 import matplotlib.pyplot as plt imgcv2.imread(rC:\Users\LEGION\Desktop\OIP-C.webp) color(b,g,r) #循环遍历每个通道计算并绘制直方图 for i,col in enumerate(color): histrcv2.calcHist( [img], [i], None, [256],[0,256]) plt.plot( histr,colorcol) plt.show()彩色图像的通道顺序默认返回的是 BGR 格式的图像enumerate()函数会同时返回通道索引i和对应的颜色col通道索引i传入calcHist函数的第二个参数用于指定当前计算的通道运行结果掩膜在实际的项目中我们往往不需要计算整个图像的直方图而是只需要计算图像中某个特定区域的直方图这时候就需要用到掩膜Mask技术。掩膜本质上是一张与原始图像大小相同的灰度图像其中白色区域像素值 255表示需要计算的区域黑色区域像素值 0表示不需要计算的区域通过cv2.bitwise_and()函数与原始图像进行按位与操作即可提取出我们需要的区域再计算该区域的直方图。制作掩膜并提取目标区域import cv2 import matplotlib.pyplot as plt #cv2.bitwise_and():对图像(灰度图像或彩色图像均可)每个像素值进行二进制与操作111100010000# # bitwise_and(src1, src2, dstNone, maskNone)参数: #src1、Src2:为输入图像或标量标src1和src2相与。 #dst:可选输出变量如果需要使用非None则要先定义且其大小与输入变量相同 #mask:图像掩膜可选参数用于指定要更改的输出图像数组的元素mask为o的值src1和Isrc2相与的值都为o. phone cv2.imread(rC:\Users\LEGION\Desktop\OIP-C.webp,cv2.IMREAD_GRAYSCALE) cv2.imshow(phone,phone) cv2.waitKey(0) #创建掩膜图像初始化一张全黑图像像素值0 mask np.zeros(phone.shape[:2],np.uint8)#创建黑白图像用于制作maskmask[50:350,100:470] 255 cv2.imshow( mask,mask) cv2.waitKey(0) Phone_mask cv2.bitwise_and(phone,phone,maskmask) cv2.imshow( phone_mask, Phone_mask) cv2.waitKey(0)按位与操作cv2.bitwise_and()函数接收三个核心参数前两个参数是需要进行按位与操作的图像此处均为原始灰度图像第三个参数是掩膜图像。按位与操作的逻辑是对于每个像素点只有当掩膜图像的对应像素值为 255二进制全 1时原始图像的像素值才会保留当掩膜图像的对应像素值为 0二进制全 0时结果图像的对应像素值也会变为 0从而实现目标区域的提取。运行结果计算并绘制局部区域直方图phone_hist_mask cv2.calcHist([phone], [0],mask, [256],[0,256]) plt.plot(phone_hist_mask)#使用calcHist的值绘制曲线图 plt.show()与计算整个图像的直方图相比这段代码的唯一区别就是将calcHist函数的第三个参数从None改为了我们制作的掩膜图像mask这样函数就只会计算掩膜中白色区域对应的像素值分布从而得到局部区域的直方图。运行结果通过掩膜技术我们可以精准地分析图像中任意感兴趣区域ROI的像素分布特征这在目标检测、图像分割、缺陷检测等实际项目中有着广泛的应用。例如在人脸识别项目中我们可以使用掩膜提取人脸区域只计算人脸区域的直方图从而避免背景区域的干扰提高后续处理的精度。

相关新闻

<span class=“js_title_inner“>康诺生物冲刺港股:9个月营收2.4亿 期内利润5341万</span>

<span class=“js_title_inner“>康诺生物冲刺港股:9个月营收2.4亿 期内利润5341万</span>

雷递网 雷建平 1月26日康诺生物制药股份有限公司(简称:“康诺生物”)日前递交招股书,准备在港交所上市。9个月营收2.38亿 期内利润5341万康诺生物是一家生物制药企业,专注于线粒体医学与健康产品的研发、药物生产及商业…

2026/7/3 6:58:00 阅读更多 →
建议收藏:AI Agent全面解析:从零开始掌握大模型智能应用开发

建议收藏:AI Agent全面解析:从零开始掌握大模型智能应用开发

文章深入探讨了AI Agent的概念、架构与实现,详细解析了模型、工具和编排层三大核心组件。介绍了Agent通过ReAct、Chain-of-Thought等推理技术实现迭代处理,以及扩展、函数和数据存储等工具如何连接外部世界。文章还提供了增强模型效果的各种策略和开发实…

2026/7/5 2:19:25 阅读更多 →
深度测评!研究生必备的一键生成工具 —— 千笔写作工具

深度测评!研究生必备的一键生成工具 —— 千笔写作工具

你是否在论文写作中屡屡受挫?选题无从下手、文献检索耗时费力、框架逻辑混乱、查重率居高不下……这些学术路上的“拦路虎”,是否让你倍感焦虑?别再独自挣扎,千笔AI——专为研究生量身打造的智能写作助手,正以强大的AI…

2026/7/6 2:09:25 阅读更多 →

最新新闻

glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)

glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)

glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)在Linux系统中,glibc作为核心C库,其升级操作堪称"心脏手术"——任何失误都可能导致系统瘫痪。当Python模块报错GLIBC_2.25 not found时&…

2026/7/6 12:02:44 阅读更多 →
MacBook Pro M3 系列外接 4K 显示器 5 个关键设置:从 HiDPI 到色彩匹配

MacBook Pro M3 系列外接 4K 显示器 5 个关键设置:从 HiDPI 到色彩匹配

MacBook Pro M3 系列外接 4K 显示器的专业调校指南 对于设计师、视频剪辑师和程序员等专业用户来说,MacBook Pro M3 系列搭配高分辨率显示器可以大幅提升工作效率和视觉体验。但要让这套组合发挥最大潜力,仅完成基础连接是远远不够的。本文将深入解析五…

2026/7/6 12:02:44 阅读更多 →
如何快速批量下载音乐歌词:LRCGET完整指南

如何快速批量下载音乐歌词:LRCGET完整指南

如何快速批量下载音乐歌词:LRCGET完整指南 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 还在为本地音乐库缺少歌词而烦恼吗?L…

2026/7/6 12:02:44 阅读更多 →
Windows 11 22H2 新增 5 大快捷键实战:Snap Layout 与 Widgets 效率提升 30%

Windows 11 22H2 新增 5 大快捷键实战:Snap Layout 与 Widgets 效率提升 30%

Windows 11 22H2 五大新增快捷键深度解析:Snap Layout与Widgets效率革命Windows 11 22H2版本带来了多项界面优化和功能升级,其中最引人注目的莫过于针对Snap Layout窗口布局和Widgets小组件的新增快捷键。这些看似简单的组合键背后,实则隐藏着…

2026/7/6 12:00:41 阅读更多 →
统信UOS V20 终端进阶:3种方式进入tty2命令行修复系统桌面

统信UOS V20 终端进阶:3种方式进入tty2命令行修复系统桌面

统信UOS V20终端救援指南:tty2命令行修复桌面故障全流程当统信UOS V20的图形界面突然崩溃时,系统管理员往往需要快速切换到纯命令行环境进行故障诊断和修复。本文将深入解析tty2终端的实战应用场景,提供从故障触发到完全恢复的完整解决方案。…

2026/7/6 11:54:35 阅读更多 →
Windows 11 23H2 修复 FTP 跳转 Edge:3 种注册表方案与 1 个 .reg 脚本

Windows 11 23H2 修复 FTP 跳转 Edge:3 种注册表方案与 1 个 .reg 脚本

Windows 11 23H2 强制跳转 Edge 访问 FTP 的终极解决方案最近升级到 Windows 11 23H2 的用户可能发现了一个恼人的问题:当尝试通过资源管理器访问 FTP 站点时,系统会强制跳转到 Edge 浏览器打开,而 Edge 对 FTP 的支持又相当有限。本文将深入…

2026/7/6 11:54:35 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻