欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 22:39:45
...

主函数如下:

#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);
}

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

【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);
}

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

【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);
}

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

【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);
}

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

【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);

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

【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);
	}
}

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