【opencv】作图函数进阶

1.rectangle()
2.ellipse()
3.RNG随机取值
4.总结

1.rectangle()
在这里插入图片描述

参数一:输入输出图像
参数二:Rect 类型的变量(Rect 参数一/二:矩形左上角点坐标,参数三/四:矩形高宽)
参数三:颜色
参数四:线条粗细
参数五:渲染类型(如LINE_8 , LINE_4, LINE_AA)

见代码示例

#include<iostream>
#include<opencv2\opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat img = Mat::zeros(Size(512, 512), CV_8UC3);

	//矩形
	Rect rect(100, 100, 200, 200);
	rectangle(img, rect, Scalar(0, 0, 255),1,LINE_8);

	imshow("img", img);
	waitKey(0);
	return 0;
}

在这里插入图片描述

2.ellipse()
在这里插入图片描述

参数一:输入输出图像
参数二:椭圆类型变量
参数三:颜色
参数四;线条粗细
RotatedRect 变量创建后需要将椭圆必要参数进行设置
包括 圆心,角度,Size(短轴长轴)

#include<iostream>
#include<opencv2\opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat img = Mat::zeros(Size(512, 512), CV_8UC3);

	//矩形
	Rect rect(100, 100, 200, 200);
	rectangle(img, rect, Scalar(0, 0, 255),1,LINE_8);

	//椭圆
	RotatedRect oval;
	oval.center = Point2f(256, 256);
	oval.angle = 45;
	oval.size = Size(100, 200);
	ellipse(img, oval, Scalar(255, 0, 0), -1);

	imshow("img", img);
	waitKey(0);
	return 0;
}

在这里插入图片描述

3.玩法
用RNG随机取值,并使用循环无限作图
不仅矩形的数据使用RNG随机取,矩形的颜色也随机取

int main()
{
	Mat img = Mat::zeros(Size(512, 512), CV_8UC3);

	//矩形
	Rect rect(100, 100, 200, 200);
	rectangle(img, rect, Scalar(0, 0, 255),1,LINE_8);

	//椭圆
	RotatedRect oval;
	oval.center = Point2f(256, 256);
	oval.angle = 45;
	oval.size = Size(100, 200);
	ellipse(img, oval, Scalar(255, 0, 0), 1);

	//黑客帝国
	Mat src = Mat::zeros(Size(512, 512), CV_8UC3);
	int x1 = 0, y1 = 0;
	int x2 = 0, y2 = 0;
	RNG rng(12345);
	while (true)
	{
		x1 = (int)rng.uniform(0, 512);
		y1 = (int)rng.uniform(0, 512);
		x2 = (int)rng.uniform(0, 512);
		y2 = (int)rng.uniform(0, 512);
		//src = Scalar(0, 0, 0);
		rectangle(src, Point(x1, y1), Point(x2, y2), Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 1);
		//line(src, Point(x1, y1), Point(x2, y2), Scalar(rng.uniform(0,255), rng.uniform(0, 255), rng.uniform(0, 255)), 1);

		imshow("src", src);
		char c = waitKey(100);
		if (c == 27)
			break;
	}

	//imshow("img", img);
	waitKey(0);
	return 0;
}

在这里插入图片描述

总结:
1.线条粗度这个参数如果填一个负数(如 -1)那么会识别为填充,和FILLED效果相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值