MFC类库中的CDC类有划线,画矩形,画椭圆,画多边形,文字等绘图函数,OpenCV也有类似的绘图函数。二者的区别在于MFC画图是在一定的区域内绘制图形,而OpenCV则是在图像上绘制,主要用于图像标注。
OpenCV的常用绘图函数有arrowedLine,circle ,drawContours, drawMarker, drawMarker, ellipse,fillConvexPoly, fillPoly , line, polylines , putText ,rectangle 。下面详细介绍这些函数及其用法。
arrowedLine()
arrowedLine()函数的原型如下:
参数:
img 装载有图像的Mat对象
pt1 第一点
pt2 第二点
color 绘制箭头线段颜色
thickness 圆形轮廓的厚度(如果为正)。负值(例如 FILLED)表示要绘制实心圆。
line_Type 线的类型,有FILLED,LINE_4,LINE_8,LINE_AA几种.
shift 点坐标中小数位数
tipLength 箭头尖端的长度与箭头长度的比例关系
用法示例
新建一个控制台程序,在程序中加入如下代码:
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//std::cout << "Hello World!\n";
Mat bgn(Size(2048, 1024), CV_8UC3, Scalar(0));
arrowedLine(bgn, Point(50, 50), Point(300, 100), Scalar(0, 0, 255), 2, 8, 0, 0.08);
imshow("Background", bgn);
waitKey(0);
return 0;
}
试运行,结果如下:
circle()
circle()函数的原型如下:
函数参数:
img 图像,如载有图像的Mat对象
center 圆心(点)
color 颜色
thickness 圆形轮廓的厚度(如果为正)。负值(例如 FILLED)表示要绘制实心圆。
lineType 线条类型
shift 中心坐标和半径值中的小数位数。
示例程序
上面程序中加入画圆代码,如下:
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//std::cout << "Hello World!\n";
Mat bgn(Size(2048, 1024), CV_8UC3, Scalar(0));
arrowedLine(bgn, Point(50, 50), Point(300, 100), Scalar