经常需要图像上显示下结果,用的时候却总差几个参数记不清,整理记录下。
函数原型:
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
作用:根据给定的圆心和半径等画圆。
参数说明:
img:输入的图片data;
center:圆心位置;
radius:圆的半径;
color:圆的颜色;
thickness:默认为1,圆形轮廓的粗细(如果为正)。负厚度表示要绘制实心圆。
lineType:默认为LINE_8, 圆边界的类型。支持的:LineTypes
shift:默认为0,中心坐标和半径值中的小数位数。
示例demo:
- import cv2
-
- img = cv2.imread(r"dog.jpg", 1)
- cv2.circle(img, (387, 461), 20, (0, 255, 0), thickness=2)
- cv2.circle(img, (286, 429), 20, (0, 0, 255), thickness=-1)
- cv2.imwrite(r"ret.jpg", img)
结果:
函数原型:
cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)
作用:画椭圆。
参数说明:
img:需要绘图的图像;
center:椭圆中心点坐标;
axes:椭圆尺寸(即长、短轴);
angle:旋转角度(顺时针方向);
startAngle:绘制的起始角度(顺时针方向);
endAngle:绘制的终止角度(例如,绘制整个椭圆是0,360,绘制下半椭圆就是0,180);
color:线条颜色(BGR);
thickness:线条粗细(默认值=1);
lineType:线条类型(默认值=8);
shift:圆心坐标点和数轴的精度(默认值=0)
示例demo:
- import cv2
-
- img = cv2.imread(r"dog.jpg", 1)
- cv2.ellipse(img, (260, 240), (170, 130), 0, 0, 160, (0, 255, 0), thickness=-1) # 画扇形
- cv2.ellipse(img, (300, 240), (170, 130), 0, 0, 360, (0, 255, 255), thickness=3) # 画椭圆
- cv2.imwrite(r"ret.jpg", img)
结果:
cv2.line(img, Point pt1, Point pt2, color, thickness=1, line_type=8, shift=0)
pt1,pt2分别代表直线的两个端点。
cv2.rectangle(img, Point pt1, Point pt2, color, thickness=1, line_type=8, shift=0)
pt1,pt2分别代表矩形的左上角点和右下角点。
函数原型: cv2.polylines(image, [pts], isClosed, color, thickness)
作用:cv2.polylines()方法用于绘制任何图像上的多边形。
参数:
image:这是上圆要绘制的图像;
pts:多边形点集数组;
isClosed:指示绘制的折线是否闭合的标志。如果它们是闭合的,则该函数从每条曲线的最后一个顶点到其第一个顶点绘制一条线顶点;
color:这是折线的颜色来绘制。对于BGR,我们传递一个元组;
thickness:它是折线边的厚度。
注意:绘制多边形 pts以元组表示每个点的坐标,多边形的点集必须是int32位。
- import cv2
- import numpy as np
-
- img = cv2.imread(r"dog.jpg", 1)
- pts = np.array([(165, 49), (590, 426), (286, 429)], np.int32) # shape=(N,2)
- pts = pts.reshape((-1, 1, 2)) # shape=(N,1,2),非必要,但与轮廓线兼容
- cv2.polylines(img, [pts], False, (0, 0, 255), 5)
- cv2.imwrite(r"ret.jpg", img)
结果: