- 1. 学习如何在你的电脑上配置OpenCV-Python环境!
- 1.1 开始了解OpenCV-Python
- 1.2 在 Windows 下安装 OpenCV-Python
- 1.3 在 Fedora 环境下安装 OpenCV-Python
- 1.4 在 Debian(Ubuntu)中配置 OpenCV-Python
- 1.5 在Docker中安装OpenCV-Python
- 1.6 在树莓派配置OpenCV-Python
- 2. OpenCV中的GUI功能
- 2.1 开始使用图像
- 2.2 开始使用视频
- 2.3 OpenCV 中的绘图函数
- 2.4 以鼠标为画笔
- 2.5 用滑块控制条做调色板
- 3. OpenCV中的GUI功能
- 3.1 图片基本操作
- 3.2 图像算术操作
- 3.3 性能评估与改进技巧
- 4. OpenCV中的图像处理
- 4.1 更换颜色空间
- 4.2 对图像进行几何变换
- 4.3 图像二值化处理
- 4.4 平滑图像
- 4.5 形态学转换
- 4.6 图像梯度
- 4.7 Canny边缘检测
- 4.8 图像金字塔
- 4.9.1 直方图:查找,绘制,分析
- 4.9.2 直方图均衡化
- 4.9.3 二维直方图
- 4.9.4 直方图反投影
- 4.10 OpenCV中的图像变换
- 4.10.1 傅立叶变换
- 4.11 模板匹配
- 4.12 霍夫直线变换
- 4.13 霍夫圆变换
- 4.14 基于分水岭算法的图像分割
- 4.14 使用 GrabCut 算法交互式前景提取
- 5. 特征检测和描述符
- 5.1 理解特征
- 5.2 Harris 角点检测
- 5.3 Shi-Tomasi 角点检测 & 适合用来跟踪的特征
- 5.4 介绍SIFT(尺度不变特征转换)
- 5.5 介绍SURF(加速稳健特征)
- 5.6 角点检测的FAST算法
- 5.7 BRIEF特征点描述算法
- 5.8 ORB 特征描述符(Oriented FAST and Rotated BRIEF)
- 5.9 特征匹配
- 5.10 特征匹配和使用单应性匹配来搜索物体
- 6. 视频分析
- 6.1 Meanshift和Camshift
- 6.2 光流
- 6.3 背景分割
- 7. 相机校准和3D重建
- 7.1 相机校准
- 7.2 姿势估计
- 7.3 极线几何
- 7.4 来自立体图像的深度图
- 8. 机器学习
- 8.1 K-最近邻算法
- 8.1.1 了解k-最近邻算法
- 8.1.2 使用kNN进行手写字符的OCR
- 8.2 支持向量机(SVM)
- 8.2.1 理解SVM
- 8.2.2 使用SVM的手写数据的OCR
- 8.3 K-Means聚类
- 8.3.1 理解 K-Means 聚类
- 8.3.2 OpenCV中的K-Means聚类
- 9. 计算摄影学
- 9.1 图像去噪
- 9.2 图像修复
- 9.3 高动态范围(HDR)
- 10. 目标检测
- 10.1 使用 Haar Cascades 的面部识别
- 11. OpenCV-Python 绑定
- 11.1 OpenCV-Python绑定如何工作?
2.3 OpenCV 中的绘图函数
目标
- 学习如何在 OpenCV 中绘制不同的几何图形
- 你将会学到这些函数:
cv2.line()
、cv2.circle()
、cv2.rectangle()
、cv2.ellipse()
,cv2.putText()
等
代码
在上面的所有函数中,您将看到如下所示的一些常见参数:
img
:要在其上绘制图形的图像color
:图形的颜色。 对于 BGR 图像,将其作为元组传递,例如:(255,0,0)为蓝色。 对于灰度图像,只需传递标量值即可。thickness
:线或圆的粗细等。如果在绘制像圆这样的闭合图形时传递-1,将会填充满图形。 默认thickness = 1lineType
:线的类型,是否 8-connected,反锯齿等。默认为 8-connected。cv2.LINE_AA
表示反锯齿的曲线,效果看起来很棒。
绘制线条
要绘制线条,你需要向函数中传入线条的起始和结束坐标。 我们将创建一个黑色的图像,并从左上角到右下角画一条蓝线。
import numpy as np
import cv2
# 创建黑色图片
img = np.zeros((512,512,3), np.uint8)
# 绘制宽为5px的蓝色对角线
cv2.line(img,(0,0),(511,511),(255,0,0),5)
绘制矩形
要绘制矩形,需要向函数中传入矩形的左上角和右下角。 这一次,我们将在图像的右上角画一个绿色的矩形。
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
绘制圆
要绘制一个圆,您需要它的中心坐标和半径。 我们将在上面绘制的矩形内绘制一个圆。
cv2.circle(img,(447,63), 63, (0,0,255), -1)
绘制椭圆
为了绘制椭圆,我们需要传递几个参数。 第一个参数是中心位置(x,y)。
第二个参数是轴长度:(长轴长度,短轴长度)。 angle
是逆时针方向的椭圆的旋转角度。 startAngle
和endAngle
表示从长轴顺时针方向测量的椭圆弧的起点和终点。 输入0和360将给出完整的椭圆。 有关更多详细信息,请查看cv2.ellipse()
的文档。 下面的示例在图像的中心绘制一个只有一半的椭圆。
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
绘制多边形
要绘制多边形,首先需要将各个顶点的坐标传入函数。 将这些点转换为ROWSx1x2形状的数组,其中ROWS是顶点数,这个数组应该是int32类型的。 在这里,我们绘制了一个黄色四个顶点的小多边形。
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))
如果第三个参数是False,你将会得到一个连接所有点的多段线,而不是一个闭合的形状。
cv2.polylines()
可以用来绘制多段线。 只要创建一个你想绘制的所有线的列表,并将其传递给函数。 所有线路都将被单独绘制。 绘制一组线比每段线都调用一次cv2.line()
要快得多。
向图片中增加文字
要在图像中放置文本,您需要指定以下内容。
- 你想写的文本数据
- 要放置的位置坐标(文字位置的左下角)。
- 字体类型(阅读
cv2.putText()
文档来查看支持的字体) - 字体大小
- 常规的东西,如颜色,厚度,线型等。为了更好的显示效果,推荐使用
lineType = cv2.LINE_AA
。
我们将在图像上写下白色的 OpenCV。
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
更多资源
椭圆函数中使用的角度和通常理解的角度有所不同。 有关更多详细信息,请访问此讨论。
练习
试着用 OpenCV 中的绘图函数画一个 OpenCV 的图标。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论