位置: IT常识 - 正文

计算机视觉OpenCV-图像直方图(计算机视觉opencv项目简单代码)

编辑:rootadmin
计算机视觉OpenCV-图像直方图

推荐整理分享计算机视觉OpenCV-图像直方图(计算机视觉opencv项目简单代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:计算机视觉opencv基础使用什么语言,计算机视觉opencv的定义,计算机视觉opencv 有什么项目,计算机视觉opencv项目,计算机视觉opencv项目简单代码,计算机视觉opencv教材电子版,计算机视觉opencv总结,计算机视觉opencv期末考试,内容如对您有帮助,希望把文章链接给更多的朋友!

💥💥💥欢迎来到本博客💥💥💥 🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法。然后正在学习深度学习的相关内容。以后可能会涉及到网络安全相关领域,毕竟这是每一个学习计算机的梦想嘛! 📋博主优势:🌞🌞🌞博客内容尽量做到每一步都可以进行实操,做到极度细致,不仅仅可以满足自己复习,也方便大家进行学习!亲民!!! 📝目前更新:🌟🌟🌟目前已经更新了关于网络爬虫得相关系列、机器学习得相关知识、目前正在更新计算机视觉-OpenCV,后续将继续更新其他知识。 📃个人主页:吃猫的鱼python个人主页 🔎支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持! 💛💛💛本文摘要💛💛💛

计算机视觉OpenCV图像直方图的相关知识。具体包括以下几个内容。 1.图像直方图基本含义和绘制 2.OpenCV统计直方图并绘制 3.使用掩码的直方图-直方图、掩膜 4.直方图均衡化原理及函数 5.子图的绘制 6.直方图均衡化对比 😎1.图像直方图基本含义和绘制

首先我们先要了解一下python三大剑客之一——matplotlib 我们都知道matlab作为一个工具是公认的绘图牛,但是我想说的是python下的matplotlib这个超级剑客也是非常厉害的,因为python近年来才火热起来,所以热度没有matlib高,但是matlib可以实现的功能作为python都是差不多可以实现的。 我们回归正题,先来介绍下matplotlib怎么简单的画一个直方图。

import numpy as npimport matplotlib.pyplot as plt x=np.arange(0,5,0.1)y=np.sim(x)plt.plot(x,y)

简单的不能再简单了吧,我们使用它去绘制一个sin(x)的函数图像。 那么matplotlib如何和CV一起工作呢?

import cv2import matplotlib.pyplot as plto=cv2.imread("image\\boatGray.bmp")histb = cv2.calcHist([o],[0],None,[256],[0,255])plt.plot(histb,color='b')plt.show()

结果是(也很好理解吧): 针对于彩色图像我们也可以针对BGR分别作图。

import cv2import matplotlib.pyplot as plto=cv2.imread("image\\girl.bmp")histb = cv2.calcHist([o],[0],None,[256],[0,255])histg = cv2.calcHist([o],[1],None,[256],[0,255])histr = cv2.calcHist([o],[2],None,[256],[0,255])plt.plot(histb,color='b')plt.plot(histg,color='g')plt.plot(histr,color='r')plt.show()

直方图的绘制我们使用的函数还有:函数hist 功能:根据数据源和像素级绘制直方图。 语法: hist(数据源,像素级) 数据源:图像,必须是一维数组。 像素级:一般是256,指[0,255] 功能:将多维数组降为一维数组。格式:一维数组=多维数组.ravel()

import cv2import matplotlib.pyplot as plto=cv2.imread("image\\boat.jpg")cv2.imshow("o",o)cv2.waitKey()cv2.destroyAllWindows()plt.hist(o.ravel(),256)

😎2.OpenCV统计直方图并绘制

使用OpenCV对图像进行绘制的和横坐标表示像素值比如[0,255],纵坐标表示像素值的个数。 绘制函数:

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

其中,hist返回结果是一个直方图,返回的直方图,是一个二维数组。 image原始图像:图像需要使用“[ ]”括起来使用。 channels:

通道编号需要用中括号括起来输入图像是灰度图时,它的值是[0];彩色图像可以是[0],[1],[2]。分别对应通道B,G,R。 mask:掩码图像统计整幅图像的直方图,设为None。统计图像某一部分的直方图时,需要掩码图像。 histSize BINS的数量,例如【256】 ranges 像素值范围RANGE accumulate默认值为false。如果被设置为true,则直方图在开始分配时不会被清零。该参数允许从多个对象中计算单个直方图,或者用于实时更新直方图。多个直方图的累积结果,用于对一组图像计算直方图。 使用OpenCV画出直方图:import cv2import matplotlib.pyplot as plto=cv2.imread("image\\girl.bmp")histb = cv2.calcHist([o],[0],None,[256],[0,255])histg = cv2.calcHist([o],[1],None,[256],[0,255])histr = cv2.calcHist([o],[2],None,[256],[0,255])plt.plot(histb,color='b')plt.plot(histg,color='g')plt.plot(histr,color='r')plt.show()计算机视觉OpenCV-图像直方图(计算机视觉opencv项目简单代码)

😎3.使用掩码的直方图-直方图、掩膜

掩码说实话就是使用掩膜的黑色部分把原始图像的部分给覆盖掉,也称为过滤掉。那么我们怎么做呢?首先我们需要创建一个掩膜:

mask=np.zeros(image.shape,np.uint8)mask[200:400,200:400]=255

首先创建一个全0的和原图像size一致的,然后我们把指定范围指定为白色。然后传入函数内:

import cv2import numpy as npimport matplotlib.pyplot as plt显示直方图image=cv2.imread("image\\girl.bmp",cv2.IMREAD_GRAYSCALE)mask=np.zeros(image.shape,np.uint8)mask[200:400,200:400]=255histMI=cv2.calcHist([image],[0],mask,[256],[0,255])histImage=cv2.calcHist([image],[0],None,[256],[0,255])plt.plot(histImage)plt.plot(histMI)

结果是: 掩膜原理: 说实在的就是与和或的关系,与就是一个不行就都不行。或就是一个行就可以。 而我们的掩膜原理主要用到的就是与操作; 计算结果 = cv2.bitwise_and(图像1,图像2)

import cv2import numpy as npimport matplotlib.pyplot as pltimage=cv2.imread("image\\boat.bmp",0)mask=np.zeros(image.shape,np.uint8)mask[200:400,200:400]=255mi=cv2.bitwise_and(image,mask)cv2.imshow('original',image)cv2.imshow('mask',mask)cv2.imshow('mi',mi)cv2.waitKey()cv2.destroyAllWindows()

😎4.直方图均衡化原理及函数

在维基百科是这样定义的: 对应在图像上就是: 前提:如果一幅图像占有全部可能的灰度级,并且均匀分布。 结论:该图像具有高对比度和多变的灰度色调。 外观:图像细节丰富,质量更高。 算法: 1.计算累计直方图 2.将累计直方图进行区间转换 3.在累计直方图中,概率相近的原始值,会被处理为相同的值。 1.计算灰度级出现的概率情况 𝑟𝑘:第K个灰度级 𝑛𝑘:第k级灰度的像素个数 N:图像内总像素的个数 L:灰度级最大值,灰度值区间[0,L-1] 2.变换函数 我们把公式表现在图片上就是: 这样就完成了从原始图像计算得到了均衡直方图。 虽然二者相似。但右侧的分布更均衡,相邻像素级概率和与高概率近似相等。可应用到医疗图像处理,车牌识别,人脸识别。 对应函数是:dst = cv2.equalizeHist( src )

import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('image\\equ.bmp',cv2.IMREAD_GRAYSCALE)equ = cv2.equalizeHist(img)plt.hist(img.ravel(),256)plt.figure()plt.hist(equ.ravel(),256)

我们处理一下lena,就是这样:

😎5.子图的绘制

我们有的时候为了方便对比,会想要把几个图放在一张大图中进行比较,那么我们怎么去做呢?有没有一个函数可以完成这个操作呢。 subplot(nrows, ncols, plot_number) nrows表示行数,ncols表示列数,plot_number表示第几个。subplot(2,3,4)那么就表示2行三列,第四个图。 当每一个参数都小于10时,可以直接书写三个数字,表示为“subplot(234)

import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('image\\boatGray.bmp',cv2.IMREAD_GRAYSCALE)equ = cv2.equalizeHist(img)plt.subplot(121),plt.hist(img.ravel(),256)plt.subplot(122),plt.hist(equ.ravel(),256)

imshow(X, cmap=None) X表示要绘制的图像,cmap表示colormap,颜色图谱,默认为RGB(A)颜色空间。 灰度图像 :colormap,颜色图谱,默认为RGB(A)颜色空间使用参数cmap=plt.cm.gray 彩色图像 :colormap,颜色图谱,默认为RGB(A)颜色空间,如果使用opencv读入的图像,默认空间为BGR,需要调整色彩空间为RGB。

import cv2import matplotlib.pyplot as plto = cv2.imread('image\\girl.bmp')g=cv2.cvtColor(o, cv2.COLOR_BGR2GRAY)plt.subplot(221)plt.imshow(o),plt.axis('off')plt.subplot(222)plt.imshow(o,cmap=plt.cm.gray),plt.axis('off')plt.subplot(223)plt.imshow(g),plt.axis('off')plt.subplot(224)plt.imshow(g,cmap=plt.cm.gray),plt.axis('off')

第一个图是:彩色图像,使用默认参数。 第二个图是:彩色图像,使用参数cmap=plt.cm.gray 第三个图是:灰色图像,使用默认参数 第四个图是:灰色图像,使用参数cmap=plt.cm.gray 那么只有第四个图是正确的。 对于彩色图像:

import cv2import matplotlib.pyplot as pltimg = cv2.imread('image\\girl.bmp')b,g,r=cv2.split(img)img2=cv2.merge([r,g,b])plt.subplot(121)plt.imshow(img),plt.axis('off')plt.subplot(122)plt.imshow(img2),plt.axis('off')

必须要将BGR split然后merge成RGB才可以。

😎6.直方图均衡化对比import cv2import matplotlib.pyplot as pltimg = cv2.imread('image\\boat.bmp',cv2.IMREAD_GRAYSCALE)equ = cv2.equalizeHist(img)plt.subplot(221)plt.imshow(img,cmap=plt.cm.gray),plt.axis('off')plt.subplot(222)plt.imshow(equ,cmap=plt.cm.gray),plt.axis('off')plt.subplot(223)plt.hist(img.ravel(),256)plt.subplot(224)plt.hist(equ.ravel(),256)

🔎支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!

本文链接地址:https://www.jiuchutong.com/zhishi/299583.html 转载请保留说明!

上一篇:CSS3如何调整背景图片大小(css3两种调整背景图片大小的方式)

下一篇:【机器学习】支持向量回归

  • 企查查企业信息查询新注册公司

    企查查企业信息查询新注册公司

  • 博客的推广优化方法有哪些?(简述博客营销的推广和优化?)

    博客的推广优化方法有哪些?(简述博客营销的推广和优化?)

  • 酷喵VIP是否可以登录2台电视(酷喵会员可以看电视直播吗)

    酷喵VIP是否可以登录2台电视(酷喵会员可以看电视直播吗)

  • 苹果手表不显示6位验证码(苹果手表不显示qq群消息)

    苹果手表不显示6位验证码(苹果手表不显示qq群消息)

  • 笔记本除法符号在哪里(笔记本除法符号怎么打)

    笔记本除法符号在哪里(笔记本除法符号怎么打)

  • 为什么咪咕音乐听歌不要钱(为什么咪咕音乐流量用不了)

    为什么咪咕音乐听歌不要钱(为什么咪咕音乐流量用不了)

  • 华为mate30pro热点在哪里(华为mate30pro热点怎么连接)

    华为mate30pro热点在哪里(华为mate30pro热点怎么连接)

  • qq被删了自己知道吗(qq被删了自己知道吗知乎)

    qq被删了自己知道吗(qq被删了自己知道吗知乎)

  • 苹果耳机单只怎么配对(苹果耳机单只怎么买)

    苹果耳机单只怎么配对(苹果耳机单只怎么买)

  • iphonex绿屏了怎么办(苹果x绿屏了)

    iphonex绿屏了怎么办(苹果x绿屏了)

  • 12123信息申诉验证失败怎么回事(12123信息申诉在哪里)

    12123信息申诉验证失败怎么回事(12123信息申诉在哪里)

  • 程序是什么有序集合(程序的序是什么结构)

    程序是什么有序集合(程序的序是什么结构)

  • 珍珠屏和全面屏的区别(珍珠全面屏和水滴全面屏一样吗)

    珍珠屏和全面屏的区别(珍珠全面屏和水滴全面屏一样吗)

  • vivo手机如何紧急求救(vivo手机怎么设置紧急呼叫电话)

    vivo手机如何紧急求救(vivo手机怎么设置紧急呼叫电话)

  • 手机电池总是温度过高怎么办(手机电池总是温度较低)

    手机电池总是温度过高怎么办(手机电池总是温度较低)

  • i音乐怎么导入音乐(i音乐怎么导入录音)

    i音乐怎么导入音乐(i音乐怎么导入录音)

  • 爱奇艺是什么软件(爱奇艺属于哪类软件)

    爱奇艺是什么软件(爱奇艺属于哪类软件)

  • 朋友圈分界线怎么弄(朋友圈分界线素材)

    朋友圈分界线怎么弄(朋友圈分界线素材)

  • 美图v7怎么关闭多任务(美图手机关闭常用建议)

    美图v7怎么关闭多任务(美图手机关闭常用建议)

  • realme手机什么系统(realme系列)

    realme手机什么系统(realme系列)

  • 微博如何快速增加微博粉丝(微博如何快速增加经验值)

    微博如何快速增加微博粉丝(微博如何快速增加经验值)

  • 为什么手机解锁有广告(为什么手机解锁密码是对的解不了)

    为什么手机解锁有广告(为什么手机解锁密码是对的解不了)

  • 安全系统不起作用或未安装怎么办?(安全系统不起作用或未正确安装 cad2016)

    安全系统不起作用或未安装怎么办?(安全系统不起作用或未正确安装 cad2016)

  • 前端学习之CSS(前端css要掌握到什么程度)

    前端学习之CSS(前端css要掌握到什么程度)

  • fwhois命令  查找并显示用户信息(find命令详解查找文件)

    fwhois命令 查找并显示用户信息(find命令详解查找文件)

  • groff命令  编写手册页面(gfortran编译命令)

    groff命令 编写手册页面(gfortran编译命令)

  • 增值税留抵退税怎么做账务处理
  • 社会保障税的征收条件
  • 增值税发票抵扣操作流程
  • 税控盘及维护费的会计分录
  • 政府补贴是否要交企业所得税
  • 展板制作费属于什么服务
  • 基本医疗保险基金与生育保险基金
  • 房屋租赁需要交税吗?
  • 实收资本未认缴资本还用填写吗
  • 股东捐赠给企业资金保壳
  • 对方跨行转账成功后我却没收到款还能追回来吗
  • 租赁费交税税率是多少
  • 税款滞纳金可以退吗
  • 政府回收土地要交土地增值税吗
  • 销售不动产税务处理
  • 简易征收工程款可以抵扣吗?
  • 不计提折旧的固定资产是()
  • 坏账损失做哪个科目
  • 出租设备的折旧计入哪个科目
  • 12月的发票可以1月付款吗
  • 我想看一下这个月几日
  • 卸载了驱动程序会怎么样
  • linux命令-a
  • 自产原材料
  • win11怎么用win10界面
  • 戴尔电脑设置u盘
  • mac系统中文输入法切换
  • vagrant 安装centos7
  • 房地产企业销售无产权车位
  • 外购货物用于职工奖励
  • mac重装macos
  • 企业受赠业务的法律规定
  • 施工企业工程结算
  • 转租会计如何记账
  • 天窗漏进来的水去哪了
  • 融资租赁增值税税目
  • 无形资产属于哪一类
  • 滴滴打车开具的电子发票可以抵扣吗
  • promise thenable
  • 猿类作文
  • 前端 自动化脚本 怎么写
  • 新必应申请使用资格
  • 所得税汇算清缴前取得跨年发票
  • 待摊费用多久摊销一次
  • 资产减值损失账户核算内容
  • 业务招待费汇算清缴怎么填表
  • 成本核算步骤
  • 第四季度报表和年报对不上
  • 用友t3制单日期定住不变
  • 专票没有抵扣联可以作废吗
  • 家庭分割财产怎么处理
  • 缴税零申报
  • 对公账户有法律效力吗
  • 帐务处理是指什么工作
  • 资本公积是什么意思,举个例子呗
  • 资金占用费怎么写
  • 外币业务的会计分录
  • 出口样品视同销售如何做会计处理?
  • 原材料变为商品怎么做账
  • 处理报废的固定资产账务处理
  • 预付卡业务该如何管理
  • 如何设置生产成本总账表格
  • xp更改dns
  • linux中cat命令的用法含义
  • svchoost.exe - svchoost是什么进程 有什么作用
  • cp命令不要覆盖提示
  • centos5.4
  • rtmservice.exe - rtmservice是什么进程 有什么用
  • script_tool_for_linux.bash: Linux 环境下的 hosts 一键部署脚本
  • [置顶]津鱼.我爱你
  • [置顶]公主大人接下来是拷问时间31
  • javascript中的继承
  • unity地形图片
  • javascript 数组删除
  • 云南人社医保缴费步骤
  • 拆迁户契税减免政策文件
  • 消费税的纳税义务的发生时间是如何规定的
  • 云南税务局发票查询
  • 政府收回土地条件
  • 企业租入房子用交税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设