亲宝软件园·资讯

展开

【opencv系列04】OpenCV4.X图形绘制

fahaiAI 人气:1
### 一、 基本图形绘制 #### 1. 基本函数与参数 `cv2.line()`: 线 `cv2.circle()`: 圆 `cv2.rectangle()`: 矩形 `cv2.ellipse()`: 椭圆 `cv2.putText()`: 文字 * `img`:需要绘制形状的图像。 * `color`:颜色的形式,对于BGR,将作为元组传递比如(255,0,0)表示蓝色;对于灰度图,只需要传递标量值。 * `thickness`: 线或圆形等图像的厚度,如果对闭合图像像圆形传递“-1”,它将填充形状, 默认厚度 = 1。 * `lineType`:线的类型,默认情况下为8连接,cv2.LINE_AA 是适合曲线的抗锯齿线。
#### 2. 画线 `line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)` * `pt1`:直线起点 * `pt2`:直线终点 **创建一个白色图像,并在其上从左上角到右下角绘制一条蓝线。** **代码** ``` py import numpy as np import cv2 # 创建黑底图像(像素值【0,255】,白色为255) img = np.ones((512, 512, 3), np.uint8) * 255 # 绘制宽度为 5 px 的蓝线(B,G,R) cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5) cv2.imshow('line', img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/ee439d99-8358-47ba-81f5-694a98c05569.png)
#### 3. 矩形 `rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)` * `pt1`:矩形左上角坐标 * `pt2`:矩形右下角坐标 **在图像的右上角绘制一个绿色矩形。** **代码** ```py import numpy as np import cv2 # Create a black image img = np.zeros((512, 512, 3), np.uint8) cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3) cv2.imshow('rectangle', img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/a1110b2e-7a30-4c39-925e-1955ae573bed.png)
#### 4. 画圆 `circle(img, center, radius, color, thickness=None, lineType=None, shift=None)` * `center`:圆心位置 * `radius`:半径 **在图像的右上角绘制一个绿色矩形。** **代码** ```py import numpy as np import cv2 # Create a black image img = np.zeros((512, 512, 3), np.uint8) cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3) cv2.circle(img, (447, 63), 63, (0, 0, 255), -1) cv2.imshow('circle',img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/54f3c067-9231-4985-90ac-b848979635f7.png)
#### 5. 椭圆 `ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)` * `center`:中心位置 * `axes`:轴长度(长轴长度,短轴长度) * `angle`:椭圆在逆时针方向上的旋转角度 * `startAngle`:主轴顺时针方向测量的椭圆弧的起点 * `endAngle`:主轴顺时针方向测量的椭圆弧的终点 **在图像的右上角绘制一个绿色矩形。** **代码** ```py import numpy as np import cv2 # Create a black image img = np.zeros((512, 512, 3), np.uint8) cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1) cv2.imshow('ellipse', img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/c16ca0a4-8b4d-4a43-ba28-a8ca1b1c8937.png)
#### 6. 多边形 `polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)` 要绘制多边形,首先需要顶点坐标.将这些点转换为$ROWSx1x2$形状的数组,其中ROWS是顶点数,它应该是int32类型. **绘制一个带有四个黄色顶点的小多边形。** **代码** ```py import numpy as np import cv2 # Create a black image img = np.zeros((512, 512, 3), np.uint8) pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255)) cv2.imshow('polylines',img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/cd96a23c-6ff0-4018-9fec-4dfe9e048a60.png) **Note**: 如果第三个参数为False,您将获得连接所有点的折线,而不是闭合形状。 `cv2.polylines()`可用于绘制多条线,只需创建要绘制的所有行的列表并将其传递给函数, 所有线条都将单独绘制,绘制一组行比为每行调用cv2.line() 要好得多,速度更快。
#### 7. 添加文字 `putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)` 要将文本放入图像中,您需要指定以下内容。 * `text`:要写入的文本数据 * `org`:您想要放置它的位置坐标(即数据开始的左下角)。 * `fontFace`:字体类型(检查cv2.putText() 文档以获取支持的字体) * `fontScale`:字体比例(指定字体大小) 常规的东西,如颜色,粗细,线型等。为了更好看,建议使用lineType = cv.LINE_AA。 **图像上写白色的opencv几个字母**。 **代码** ```py import numpy as np import cv2 # Create a black image img = np.zeros((512, 512, 3), np.uint8) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2 , cv2.LINE_AA) cv2.imshow('text', img) cv2.waitKey() ``` ![](https://imgkr.cn-bj.ufileos.com/4e0c9fc3-81cf-414e-816d-d35fbca588e9.png)

加载全部内容

相关教程
猜你喜欢
用户评论