简单几何图像一般包括点、直线、矩阵、圆、椭圆、多边形等等。首先认识一下opencv对像素点的定义。图像的一个像素点有1或者3个值,对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值,他们表现出不同的颜色。
那么有了点才能组成各种多边形。
(一)首先绘制直线
函数为:cv2.line(img,Point pt1,Point pt2,color,thickness=1,line_type=8 shift=0)
有值的代表有默认值,不用给也行。可以看到这个函数主要接受参数为两个点的坐标,线的颜色(彩色图像的话颜色就是一个1*3的数组)如下:
1
2
3
4
5
6
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
),np.uint8)#生成一个空灰度图像
cv2.line(img,(
0
,
0
),(
511
,
511
),
255
,
5
)
plt.imshow(img,
'gray'
)</code>
|
1
2
3
4
5
6
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
,
3
),np.uint8)#生成一个空彩色图像
cv2.line(img,(
0
,
0
),(
511
,
511
),(
155
,
155
,
155
),
5
)
plt.imshow(img,
'brg'
)</code>
|
(二)绘制矩形
函数:cv2.rectangle(img,(380,0),(511,111),(255,0,0),3),需要确定的就是矩形的两个点(左上角与右下角),颜色,线的类型(不设置就默认)。
比如:
1
2
3
4
5
6
7
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
,
3
),np.uint8)#生成一个空彩色图像
cv2.rectangle(img,(
20
,
20
),(
411
,
411
),(
55
,
255
,
155
),
5
)
plt.imshow(img,
'brg'
)
</code>
|
(三)绘制圆形
绘制圆形也很简单,只需要确定圆心与半径,函数:
cv2.circle (img,(380,0),63,(255,0,0),3),比如:
1
2
3
4
5
6
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
,
3
),np.uint8)#生成一个空彩色图像
cv2.circle(img,(
200
,
200
),
50
,(
55
,
255
,
155
),
1
)#修改最后一个参数
plt.imshow(img,
'brg'
)</code>
|
1
2
3
4
5
6
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
,
3
),np.uint8)#生成一个空彩色图像
cv2.circle(img,(
200
,
200
),
50
,(
55
,
255
,
155
),
8
)#修改最后一个参数
plt.imshow(img,
'brg'
)</code>
|
(四)绘制椭圆
椭圆比较复杂,涉及到长轴短轴,椭圆圆心,旋转角度等等,看看opencv参考手册上的介绍吧:
图像化如下:
一个例子如下:
1
2
3
4
5
6
7
|
<code
class
=
"hljs"
python=
""
>
import
cv2
import
numpy as np
from matplotlib
import
pyplot as plt
img = np.zeros((
512
,
512
,
3
),np.uint8)#生成一个空彩色图像
cv2.ellipse(img,(
256
,
256
),(
150
,
100
),
0
,
0
,
180
,
250
,-
1
)
#注意最后一个参数-
1
,表示对图像进行填充,默认是不填充的,如果去掉,只有椭圆轮廓了
plt.imshow(img,
'brg'
)</code>
|