openCV学习
1. 图像读取
imread(img_path,flag) 读取图片,返回图片对象
img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None
flag:cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1
cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0
cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1
2. imread通常配合imshow
3. OpenCV读取图像的通道是BGR,而Matplotlib的通道是RGB,需要转换
img1=cv2.cvtColor(img1,cv2.COLOR_BRG2RGB)
4. Matplotlib显示图像,如果是0-1区间,值为float,如果是0-255区间,值为int,需要转换,否则无法显示,报错:
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
image = image.astype(int) # 0~255转换为int
5. numpy.zeros_like(a)
:a
是一个nd array,就是生成一个和你所给数组
a
相同shape
的全0
数组
6. 绘制中方图代码
plt.hist(img.ravel(),256,[0,256]);
plt.show()
7. subplot:
subplot(numRows, numCols, plotNum)
subplot是将多个图画到一个平面上的工具,即一个 Figure
对象可以包含多个子图(Axes
)
图表的整个绘图区域被分成 numRows
行和 numCols
列
然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1
plotNum
参数指定创建的 Axes
对象所在的区域