直方图-绘制子图subplot imshow

显示好几幅图片在一个窗口内,逗号可以省略。

在这里插入图片描述
其实imshow这个函数前两篇博客中已经开始使用了,与matlab中的使用很相似。下面介绍一下
在这里插入图片描述

若要显示灰度图片,参数为 cam=plt.cm.gray
若要显示彩色图片,opencv 读入的图片默认BGR,必须调整为RGB才能显示

imshow灰度图片 编程对比一下 显示效果。

import cv2
import matplotlib.pyplot as plt

o=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.subplot(223)
plt.imshow(g)                     #显示灰度图片  参数默认
plt.subplot(224)
plt.imshow(g,cmap=plt.cm.gray)   #显示灰度图片 参数设为灰度图片
plt.show()

在这里插入图片描述
从结果可以看出,彩色图片颜色通道都不对,只有第四种灰度图片加灰度图片的参数才能正确显示图片。此外还有第一幅没有坐标系 其他三幅都有,程序中已表明起作用语句。那么如何显示彩色图片呢?
imshow 彩色图像

import cv2
import matplotlib.pyplot as plt

o=cv2.imread('image\\girl.bmp')
b,g,r=cv2.split(o)    #将BGR图片转为RGB
o1=cv2.merge([r,g,b])
plt.subplot(121)
plt.imshow(o)
plt.axis('off')
plt.subplot(122)
plt.imshow(o1)
plt.axis('off')
plt.show()

在这里插入图片描述

在一个窗口显示原图像及其直方图,均衡化图片及其直方图。

import cv2
import matplotlib.pyplot as plt

o=cv2.imread('image\\equ2.bmp',cv2.IMREAD_GRAYSCALE)
e=cv2.equalizeHist(o)

plt.subplot(221)
plt.imshow(o,cmap=plt.cm.gray),plt.axis('off')
plt.subplot(222)
plt.imshow(e,cmap=plt.cm.gray),plt.axis('off')
plt.subplot(223)
plt.hist(o.ravel(),256)
plt.subplot(224)
plt.hist(e.ravel(),256)
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sundanping_123/article/details/86543206