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效果相同。