赞
踩
目录
3、numpy中的reval(散开、解开)函数、flatten(变平)函数和reshape()函数
语法:
import cv2
img = cv2.imread('image.jpg')
print(img)
- [[[ 33 26 103]
- [ 34 21 100]
- [ 34 15 98]
- ...
- [ 74 98 118]
- [ 64 89 106]
- [ 57 85 101]]
-
- [[ 33 27 102]
- [ 33 23 101]
- [ 33 18 100]
- ...
- [ 90 124 145]
- [ 77 109 128]
- [ 67 98 115]]
-
- [[ 33 27 101]
- [ 33 24 101]
- [ 33 21 101]
- ...
- [103 146 170]
- [ 92 130 153]
- [ 81 118 137]]
-
- ...
-
- [[252 198 154]
- [255 212 162]
- [255 221 170]
- ...
- [136 111 91]
- [112 77 57]
- [ 79 38 23]]
-
- [[243 181 139]
- [247 193 145]
- [251 206 157]
- ...
- [133 111 91]
- [116 84 64]
- [ 88 50 33]]
-
- [[239 177 139]
- [242 183 140]
- [249 199 153]
- ...
- [127 109 92]
- [113 86 68]
- [ 90 57 41]]]
cv2.imread在不加第二个参数的情况下默认将图片转换成了一个三维数组,
最里面的一维代表的是一个像素的三个通道的灰度值,
第二个维度代表的是第一行所有像素的灰度值,
第三个维度,也就是最外面的一个维度代表的是这一张图片。
imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:
计算图像灰度直方图
图像的灰度直方图可以统计出图像中的每一个像素的灰度值在整个图像中出现的次数
如上图就是一个图像的灰度直方图,横坐标代表的是像素值的范围:[0,255],越接近0表示越黑,越接近255表示图像越亮。纵坐标代表的是每一个灰度值在图像所有像素中出现的次数。柱状图越高,表示该像素值在图像中出现的次数越多。
hist = cv2.calcHist(images, channels, mask, histSize, ranges, accumulate)
参数:
- import cv2
- from matplotlib import pyplot as plt
- # 计算直方图
- img = cv2.imread('low1.png',0)
- hist = cv2.calcHist([img],[0],None,[256],[0,255])
- # 画出直方图
- plt.figure()
- plt.title("Grayscale Histogram")
- plt.xlabel("Bins")
- plt.ylabel("number of Pixels")
- plt.plot(hist)
- plt.xlim([0,256])
- plt.show()
reval和faltten函数的功能是一样的:将多维数组降为一维。
区别是:
- #两者功能
- In [14]: x=np.array([[1,2],[3,4]])
-
- # flattenh函数和ravel函数在降维时默认是行序优先
- In [15]: x.flatten()
- Out[15]: array([1, 2, 3, 4])
-
- In [17]: x.ravel()
- Out[17]: array([1, 2, 3, 4])
-
- # 传入'F'参数表示列序优先
- In [18]: x.flatten('F')
- Out[18]: array([1, 3, 2, 4])
-
- In [19]: x.ravel('F')
- Out[19]: array([1, 3, 2, 4])
-
- #reshape函数当参数只有一个-1时表示将数组降为一维
- In [21]: x.reshape(-1)
- Out[21]: array([1, 2, 3, 4])
- #x.T表示x的转置
- In [22]: x.T.reshape(-1)
- Out[22]: array([1, 3, 2, 4])
- #flatten函数返回的是拷贝,修改返回的a之后原始的数据x并未改变。
- >>> x = np.array([[1, 2], [3, 4]])
- >>> a = x.flatten()
- >>> a[1] = 100
- >>>> a
- array([ 1, 100, 3, 4])
- >>> x
- array([[1, 2],
- [3, 4]])
- #ravel返回的是视图,修改返回的数据a之后,x的内容值也会发生相应改变。
- >>> x = np.array([[1, 2], [3, 4]])
- >>> a = x.ravel()
- >>> a
- array([1, 2, 3, 4])
- >>> a[1] = 100
- >>> a
- array([ 1, 100, 3, 4])
- >>> x
- array([[ 1, 100],
- [ 3, 4]])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。