opencv学习笔记七:绘制形状和文字

主函数如下:

#include<opencv2/opencv.hpp>
using namespace cv;

void MyLine();
void MyRectangle();
void MyEllipse();
void MyCircle();
void MyRandLine();

int main(int arc, char** argv)
{   
	Mat src = imread("1.jpg");
	MyLine();
	MyRectangle();
	MyCircle();
	MyEllipse();	
	putText(src, "Hello Opencv", Point(30, 30), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 0), 3, 8);
	MyRandLine();

	namedWindow("src",CV_WINDOW_AUTOSIZE);
	imshow("src", src);		
	waitKey(0);
	return 0;
}

【1】绘制直线:line(img, p1, p2, color, thickness, line_type);

参数分别为:图像,起始点,终止点,颜色,线宽,线型。

void MyLine() {
	Point p1 = Point(20, 30);
	Point p2;
	p2.x = 300, p2.y = 300;
	Scalar color = Scalar(0, 0, 255);
	line(src, p1, p2, color, 1, LINE_8);
}

 

【2】绘制矩形:rectangle(img,rect,color,thickness,line_type);

参数分别为:图像,矩形变量(4个成员,分别为起始点横坐标,纵坐标,长,宽),颜色,线宽,线型。

void MyRectangle() {
	Rect rect = Rect(179, 87, 100, 100);
	Scalar color = Scalar(255, 0, 0);
	rectangle(src,rect,color,2,LINE_8);
}

 

【3】绘制圆:circle(img, center, radius, color, thickness, line_type);

参数分别为:图像,圆心坐标,半径,颜色,线宽,线型。

void MyCircle() {
	Scalar color = Scalar(0, 255, 255);
	circle(src, Point(src.cols / 2, src.rows / 2), 100, color, 2, LINE_8);
}

 

【4】绘制椭圆:ellipse(img, center, size axes, angle, startAngle, endAngle, color, thickness, line_type);

参数分别为:图像,椭圆中心坐标,长短轴大小(size变量2个成员,分别为宽和高),角度,起始角度,终止角度,颜色,线宽,线型。

void MyEllipse() {
	Scalar color = Scalar(0, 255, 0);
	ellipse(src, Point(src.cols / 2, src.rows / 2), Size(src.cols / 4, src.rows / 8), 90, 0, 360, color, 2, LINE_8);
}

 

【5】绘制文字:putText(img, text, p, font, scale, color, thickness, line_type);

参数分别为:图像,文字,起始坐标,字体,放缩,颜色,线宽,线型。

putText(src, "Hello Opencv", Point(30, 30), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 0), 3, 8);

【6】绘制随机线:

void MyRandLine() {
	RNG rng(1);//1为随机种子
	Point p1, p2;
	Mat dst = Mat::zeros(src.size(), src.type());

	for (int i = 0; i < 1000; i++) {
		p1.x = rng.uniform(0, src.cols);
		p2.x = rng.uniform(0, src.cols);
		p1.y = rng.uniform(0, src.rows);
		p2.y = rng.uniform(0, src.rows);
		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
		//程序执行到当前时,会等待50ms,其间用户触发了一个按键,就会被设置成这个按键的ASCLL码
		if (waitKey(50) > 0) { 
			break; 
		}
		line(dst, p1, p2, color, 1, 8);
		namedWindow("随机线");
		imshow("随机线", dst);
	}
}

 

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/82378427
今日推荐