python opencv 图像处理(八)(python培训)

网友投稿 284 2022-08-27


python opencv 图像处理(八)(python培训)

图像金字塔

图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

cv2.pyrUp: 上采样cv2.pyrDown: 下采样

有两种经典的金字塔:高斯金字塔和拉普拉斯金字塔,前者采用向下采样,后者是向上采样需要的缺失的信息。

向下采样(生成高斯金字塔)的具体操作为: 从大到小     1. 对图像进行高斯卷积     2. 删除所有的偶数行和偶数列

向上采样的缺失信息(生成拉普拉斯金字塔)的具体操作为:从小到大     1. 首先将维数扩大两倍     2. 将扩大位的值置为0     3. 对新的图像进行高斯卷积     4. 用新的层次的高斯金字塔减去 3 中形成的图像

import cv2import numpy as npimg = cv2.imread('data.jpg')up = cv2.pyrUp(img) # 上采样down = cv2.pyrDown(img) # 下采样cv2.imshow('img',img)cv2.imshow('up',up)cv2.imshow('down',down)cv2.waitKey(0)cv2.destroyAllWindows()

直方图

可以将直方图视为图形或者绘图,从而总体了解图像的强度分布。它是在x轴上具有像素值(0~255的范围),在y轴上具有图像中相应像素值的数量。cv2.calcHist(images,channels,mask,histSize,ranges)

images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels:同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是[0][1][2] 它们分别对应着 BGR。mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并 使用它。histSize:BIN 的数目,也应用中括号括来ranges:像素值范围常为 [0-256]

import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline def cv_show(img,name): cv2.imshow(name,img) cv2.waitKey() cv2.destroyAllWindows()img = cv2.imread('data.jpg',0) #0表示灰度图hist = cv2.calcHist([img],[0],None,[256],[0,256])# hist.shape # (256,1) 256指0-255的256个像素; 1指1维,像素x 多少多少个plt.hist(img.ravel(),256); # 此处不显示图像,用plt展示方便,若用cv2,要进行颜色转换plt.show()

img = cv2.imread('data.jpg') color = ('b','g','r')for i,col in enumerate(color): histr = cv2.calcHist([img],[i],None,[256],[0,256]) plt.plot(histr,color = col) plt.xlim([0,256]) plt.show()


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 数据结构与算法系列精讲之栈
下一篇:python(python培训)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~