opencv基础知识
Posted yqxg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv基础知识相关的知识,希望对你有一定的参考价值。
如何理解subplot绘制不规则子图的参数设置
在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下
subplot(numRows, numCols, plotNum)
- 图表的整个绘图区域被分成numRows行和numCols列
- 然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1
plotNum
参数指定创建的Axes
对象所在的区域
规则划分
先看一种2*2的规则划分:
-
import matplotlib
-
import matplotlib.pyplot as plt
-
-
if __name__ == ‘__main__‘:
-
for i,color in enumerate("rgby"):
-
plt.subplot(221+i, axisbg=color)
-
-
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.
-
import numpy as np
-
import matplotlib.pyplot as plt
-
# 分成2x2,占用第一个,即第一行第一列的子图
-
plt.subplot(221)
-
# 分成2x2,占用第二个,即第一行第二列的子图
-
plt.subplot(222)
-
# 分成2x1,占用第二个,即第二行
-
plt.subplot(212)
-
plt.show()
结果如下:
不规则的
2.
-
import numpy as np
-
import matplotlib.pyplot as plt
-
-
plt.subplot(211)
-
-
plt.subplot(234)
-
-
plt.subplot(235)
-
plt.subplot(236)
-
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)找到最长的一条线