opencv_day19

#绘制直方图
#(1)使用Numpy绘制直方图
#使用hist()函数绘制一幅图像的直方图
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
cv2.imshow('original',img)
plt.hist(img.ravel(),256)
plt.show()
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

在这里插入图片描述

#使用hist()将一幅图像的灰度级划分为16组后,
#绘制该图像的直方图
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
plt.hist(img.ravel(),16)
plt.show()

输出:
在这里插入图片描述

#plot()函数的使用
#例一
import matplotlib.pyplot as plt
x=[0,1,2,3,4,5,6]
y=[0.3,0.4,2,5,3,4.5,4]
plt.plot(x,y)
plt.show()

输出:
在这里插入图片描述

#给定y轴的值,使用plot()函数绘制出来
import matplotlib.pyplot as plt
y = [0.3, 0.4, 2, 5, 3, 4.5, 4]
plt.plot(y)
plt.show()

输出:
在这里插入图片描述

#将两组不同的值以不同的颜色表示出来
import matplotlib.pyplot as plt
import numpy as np
a=[1,2,3,4,5]
b=[21,32,43,21,41]
plt.plot(a,color='red')
plt.plot(b,color='green')
plt.show()

输出:
在这里插入图片描述

#使用plot()将函数cv2.calcHist()的返回值绘制为直方图
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
hisb=cv2.calcHist([img],[0],None,[256],[0,255])
plt.plot(hisb,color='b')
plt.show()

输出:
在这里插入图片描述

#使用plot()和cv2.calcHist(),将彩色图像的各个通道的直方图
#绘制在一个窗口内
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
histb=cv2.calcHist([img],[0],None,[256],[0,255])
histg=cv2.calcHist([img],[1],None,[256],[0,255])
histr=cv2.calcHist([img],[2],None,[256],[0,255])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
plt.show()

输出:
在这里插入图片描述

#如何构造一个中间是白色图像,掩模图像
import cv2
import numpy as np
mask=np.zeros([600,600],np.uint8)
mask[200:400,200:400]=255
cv2.imshow('mask',mask)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#绘制掩模结果图像的直方图
import cv2
import numpy as np
import matplotlib.pyplot as plt
image=cv2.imread('image/iu.jpeg',0)
mask=np.zeros(image.shape,np.uint8)
mask[200:400,200:400]=255
histImage=cv2.calcHist([image],[0],None,[256],[0,255])
histMI=cv2.calcHist([image],[0],mask,[256],[0,255])
plt.plot(histMI)
plt.plot(histImage,color='y')
plt.show()

输出:
在这里插入图片描述

在这里插入#直方图均衡化处理
#OpenCV使用函数cv2.equalizeHist()实现直方图均衡化
#------------------导入使用的模块--------------
import cv2
import matplotlib.pyplot as plt
#------------------读取原始图像------------
img=cv2.imread('image/physical.jpeg',0)
#-----------------直方图均衡化处理--------------
equ=cv2.equalizeHist(img)
#----------------显示均衡化前后的图像---------------
cv2.imshow('original',img)
cv2.imshow('result',equ)
#---------------显示均衡化前后的直方图------------
plt.figure('原始图像直方图')#构建窗口
plt.hist(img.ravel(),256)
plt.figure('均衡化结果直方图')#构建新窗口
plt.hist(equ.ravel(),256)
#--------------等待释放窗口------------
cv2.waitKey()
cv2.destroyWindow()代码片

输出:

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

#编写程序演示函数subplot()的使用
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('image/physical.jpeg',0)
# print(img)
equ=cv2.equalizeHist(img)
plt.figure('subplot示例')
plt.subplot(121),plt.hist(img.ravel(),256)
plt.subplot(122),plt.hist(equ.ravel(),256)
plt.show()

输出:
在这里插入图片描述

#使用matplotlib.pyplot.imshow()来显示彩色图像
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
imgRGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.figure('显示结果')
plt.subplot(121)
plt.imshow(img),plt.axis('off')
plt.subplot(122)
plt.imshow(imgRGB),plt.axis('off')
plt.show()
#可以看到如下的显示结果,左边是原始图像,,在plt.imshow中默认显示图像的顺序是RGB,所以需要转换BGR为RGB

输出:
在这里插入图片描述

#使用函数matplotlib.pyplot.imshow()显示灰度图像
#本例中,尝试使用不同的形式显示灰度图像,观察是否能够正常显示
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
g=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.figure('灰度图像显示演示')
plt.subplot(221)
plt.imshow(img),plt.axis('off')
plt.subplot(222)
plt.imshow(img,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')
plt.show()

输出:
在这里插入图片描述

#使用函数plt.imshow()以不同的参数形式显示灰度图像
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('./image/iu.jpeg')
g=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.figure('灰度图像显示演示')
plt.subplot(221);plt.imshow(g,cmap=plt.cm.gray)
plt.subplot(222);plt.imshow(g,cmap=plt.cm.gray_r)
plt.subplot(223);plt.imshow(g,cmap='gray')
plt.subplot(224);plt.imshow(g,cmap='gray_r')
plt.show()

输出:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值