参数列表如下:
img:图像.pt1:线条起点.pt2:线条终点.color:线条颜色.thickness:线条宽度.lineType:线型 完整代码如下: #include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("../test.jpg"); Point p1(100, 100); Point p2(1358, 50); line(img, p1, p2, Scalar(33, 33, 133), 2); //画第二条线 line(img, Point(300, 300), Point(258, 300), Scalar(89, 90, 90), 3); imshow("drawlines", img); imwrite("lines.jpg",img); waitKey(); return 0; }效果:
参数列表如下:
img:图像。center:圆心坐标。radius:圆形的半径。color:线条的颜色。thickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。line_type:线条的类型。见 cvLine 的描述shift:圆心坐标点和半径值的小数点位数。 完整代码如下: #include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; //画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。 int main() { Mat img = imread("lol16.jpg"); //画空心点 Point p(20, 20);//初始化点坐标为(20,20) circle(img, p, 2, Scalar(0, 255, 0)); //第三个参数表示点的半径,第四个参数选择颜色。这样子我们就画出了绿色的空心点 //这种初始化点的方式也可以 Point p2; p2.x = 100; p2.y = 100; //画实心点 circle(img, p2, 3,Scalar(255,0,0),-1); //第五个参数我设为-1,表明这是个实点。 //画空心圆 Point p3(300, 300); circle(img,p3,100,Scalar(0,0,255),3);//第五个参数我们调高点,让线更粗 //画实心圆 Point p4; p4.x = 200; p4.y = 200; circle(img, p4, 100, Scalar(120, 120, 120), - 1); imshow("drawcircle", img); waitKey(); return 0; }效果如下:
参数列表如下:
img:图像。center:椭圆圆心坐标。axes:轴的长度。angle:偏转的角度。start_angle:圆弧起始角的角度。end_angle:圆弧终结角的角度。color:线条的颜色。thickness:线条的粗细程度。line_type:线条的类型,见CVLINE的描述。shift:圆心坐标点和数轴的精度完整代码如下:
#include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("../test.jpg"); int thickness = 3; int lineType = 8; double angle = 0; //椭圆旋转角度 //第三个参数Size中的两个参数分别是横轴长、纵轴长。 //同理,thickness若是小于0,表示实心 ellipse(img,Point(600, 600),Size(450, 300),angle,0,360,Scalar(255, 255, 0),thickness,lineType); imshow("drawellipse", img); imwrite("drawellipse.jpg", img); waitKey(); return 0; }完整代码如下:
#include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("llogo.jpg"); Rect r(250, 250, 120, 200); rectangle(img, r, Scalar(0, 255, 255), 3); imshow("drawrect", img); waitKey(); return 0; }效果如下:
参数列表:
img 图像。pts 折线的顶点指针数组。npts 折线的定点个数数组。也可以认为是pts指针数组的大小contours 折线的线段数量。is_closed 指出多边形是否封闭。如果封闭,函数将起始点和结束点连线。color 折线的颜色。thickness 线条的粗细程度。line_type 线段的类型。参见cvLine。shift 顶点的小数点位数。 完整代码如下: #include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("../test.jpg"); Point points[1][4]; points[0][0] = Point(100, 115); points[0][1] = Point(255, 135); points[0][2] = Point(140, 365); points[0][3] = Point(100, 300); //ppt[]要同时添加两个多边形顶点数组的地址头 const Point* pts[] = {points[0]}; //npts[]要定义每个多边形的定点数 int npts[] = {4}; polylines(img,pts,npts,1,true,Scalar(255),5,8,0); namedWindow("Poly"); imshow("Poly", img); imwrite("Poly.jpg", img); waitKey(); fillPoly(img,pts,npts,1,Scalar(255),8,0,Point()); imshow("Poly", img); imwrite("Poly2.jpg", img); waitKey(); }效果如下:
