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 对象所在的区域

原文地址:https://www.cnblogs.com/eleni/p/12403526.html