opencv基础知识

Posted yqxg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv基础知识相关的知识,希望对你有一定的参考价值。

如何理解subplot绘制不规则子图的参数设置

版权声明:本文为博主原创文章,转载请注明出处;如果博客中有错误之处抑或有可以改进的地方,欢迎在评论区留言。 https://blog.csdn.net/f156207495/article/details/81194184

在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下

subplot(numRows, numCols, plotNum)
  • 图表的整个绘图区域被分成numRows行和numCols列
  • 然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1
  • plotNum 参数指定创建的 Axes 对象所在的区域

规则划分

先看一种2*2的规则划分:

  1.  
    import matplotlib
  2.  
    import matplotlib.pyplot as plt
  3.  
     
  4.  
    if __name__ == ‘__main__‘:
  5.  
    for i,color in enumerate("rgby"):
  6.  
    plt.subplot(221+i, axisbg=color)
  7.  
     
  8.  
    plt.show()

plt.subplot(221+i)等价于plt.subplot(221);plt.subplot(222);plt.subplot(223);plt.subplot(224)

结果如下:

技术分享图片3*3

这个很好理解。首先将figure分成2行2列,一共有4个子图,红色的子图标号为1,绿色的子图标号为2,蓝色的子图标号为3,黄色的子图标号为4。

不规则划分

那么再来看看两个不规则的示例:

1.

  1.  
    import numpy as np
  2.  
    import matplotlib.pyplot as plt
  3.  
    # 分成2x2,占用第一个,即第一行第一列的子图
  4.  
    plt.subplot(221)
  5.  
    # 分成2x2,占用第二个,即第一行第二列的子图
  6.  
    plt.subplot(222)
  7.  
    # 分成2x1,占用第二个,即第二行
  8.  
    plt.subplot(212)
  9.  
    plt.show()

结果如下:

技术分享图片不规则的

2. 

  1.  
    import numpy as np
  2.  
    import matplotlib.pyplot as plt
  3.  
     
  4.  
    plt.subplot(211)
  5.  
     
  6.  
    plt.subplot(234)
  7.  
     
  8.  
    plt.subplot(235)
  9.  
    plt.subplot(236)
  10.  
    plt.show()

结果如下:

技术分享图片不规则的

 

如何理解这些不规则的划分呢???

以第二个不规则子图的绘制作为示例来讲解:

plt.subplot(211)

该语句表示将整个figure分成2行列,该子图占据第一列,因为总共才一列,也就是一整行。

plt.subplot(234)

这个语句将整个figure分成2行3列,但是前面不是已经分成两行一列了吗,这里怎么又说分成两行三列呢??看一下第三个参数就能明白了,第三个参数值为4,表示在第4个区域,那么这句就可以解释为,不管前面是将figure怎么分的,我们现在重新将整个figure分成两行三列,该子图占据第四个位置,第四个位置也就是第二行第一列了。由于重新将figure分成两行三列,那么第一行的子图就占据3列了。正好3+1=4。

plt.subplot(235)

该子图位于第二行第二列,3+2=5。

plt.subplot(236)

该子图位于第二行第三列,3+3=6。

以上是关于opencv基础知识的主要内容,如果未能解决你的问题,请参考以下文章

pyhton—opencv直线检测(HoughLines)找到最长的一条线

pyhton—opencv直线检测(HoughLines)找到最长的一条线

OpenCV 学习笔记(颜色直方图计算 calcHist)

android小知识点代码片段

[vscode]--HTML代码片段(基础版,reactvuejquery)

opencv零基础入门:1.2 opencv代码使用简单介绍