opencv简单几何图像绘制

简单几何图像一般包括点、直线、矩阵、圆、椭圆、多边形等等。首先认识一下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
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' )

opencv简单几何图像绘制_第1张图片

?
1
2
3
4
5
6
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' )

opencv简单几何图像绘制_第2张图片

(二)绘制矩形

函数:cv2.rectangle(img,(380,0),(511,111),(255,0,0),3),需要确定的就是矩形的两个点(左上角与右下角),颜色,线的类型(不设置就默认)。
比如:

?
1
2
3
4
5
6
7
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' )

opencv简单几何图像绘制_第3张图片

(三)绘制圆形

绘制圆形也很简单,只需要确定圆心与半径,函数:
cv2.circle (img,(380,0),63,(255,0,0),3),比如:

?
1
2
3
4
5
6
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' )

opencv简单几何图像绘制_第4张图片

?
1
2
3
4
5
6
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' )

opencv简单几何图像绘制_第5张图片

(四)绘制椭圆

椭圆比较复杂,涉及到长轴短轴,椭圆圆心,旋转角度等等,看看opencv参考手册上的介绍吧:
opencv简单几何图像绘制_第6张图片
图像化如下:
opencv简单几何图像绘制_第7张图片
一个例子如下:

?
1
2
3
4
5
6
7
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' )

opencv简单几何图像绘制_第8张图片

 

你可能感兴趣的:(python,opencv,绘图)