- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
1.功能描述
当你从摄像头读取实时视频时,如果想在视频的画面中画一个方框,或者是画一个圆,是很简单的事情,可是当我在一张图上画了一个人形站立的轮廓,要求你把这个轮廓显示在实时的视频画面中,你该怎么做呢?简单的说,第一步:把第一张图的轮廓找出来,保存好,第二部,打开实时视频,每一帧图像上画上这个保存好的轮廓,说起来容易做起来难,直接代码开撕。
2.函数findContours
参考本人文章 OpenCV图像发现轮廓函数findContours()的使用
3.drawContours函数
该函数在图像中绘制轮廓线,如果线宽(thickness)≥0,则绘制轮廓边缘;如果线宽<0,则填充轮廓所围成的区域
3.1原型
void cv::drawContours (
InputOutputArray image,
InputArrayOfArrays contours,
int contourIdx,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
InputArray hierarchy = noArray(),
int maxLevel = INT_MAX,
Point offset = Point()
)
3.2参数
- 参数image 目标图像.
- 参数contours 所有输入的轮廓。每条轮廓都以点向量的形式存储。
- 参数contourIdx 表示要绘制的轮廓的参数。如果该值为负数,则绘制所有轮廓.
- 参数color 轮廓的颜色.
- 参数thickness 轮廓线的宽度。如果为负值(例如,thickness=FILLED),则绘制轮廓的内部区域.
- 参数lineType 线连通性. 参见 LineTypes
- 参数hierarchy 关于层次结构的可选信息。只有在您希望只绘制某些轮廓(参见maxLevel)时,才需要此信息.
- 参数 maxLevel 最大绘制轮廓的层级。如果该值为0,仅绘制指定的轮廓。如果