概述
/*
画矩形函数介绍:
void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
img 图像.
Rect(起始x, 起始y, 宽, 高)
color 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
thickness 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。小于0为填充,大于0为绘制
line_type 线条的类型。见cvLine的描述
shift 坐标点的小数点位数。
画圆函数
cvCircle(CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int lineType=8, int shift=0)
img为源图像指针
center为画圆的圆心坐标
radius为圆的半径
color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)
thickness 如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充
line_type 线条的类型。默认是8
shift 圆心坐标点和半径值的小数点位数
画线 line() 参数类似矩形和圆
画椭圆 ellipse() 参数类似矩形和圆
*/
`示例代码
void QuickDemo::drawing_demo(Mat &image){
Rect rect; //RECT类 rect对象用来存储一个矩形框的左上角坐标、宽度和高度
rect.x = 270;
rect.y = 40;
rect.width = 100;
rect.height = 150;
/*
rectangle(image, rect, Scalar(0, 255, 255),2,8,0);//绘制矩形
//rectangle(image, rect, Scalar(0, 255, 255), -1, 8,0);//填充矩形
circle(image, Point(265,265), 15, Scalar(255, 0, 0),2,8,0); //绘制圆
circle(image, Point(265, 265), 15, Scalar(255, 0, 0),-1, 8, 0); //绘制填充圆
imshow("绘制演示",image);
*/
Mat bg = Mat::zeros(image.size(), image.type()); //新建一个图像
rectangle(bg, rect, Scalar(0, 255, 255), 2, 8, 0);//在新建图像bg上绘制矩形
circle(bg, Point(265, 265), 15, Scalar(255, 0, 0), -1, 8, 0); //在新建图像bg上绘制填充圆
line(bg, Point(270, 40), Point(370,190), Scalar(0,255, 0), 2, 8, 0);//绘制线
RotatedRect rrt;
rrt.center = Point(265,265);
rrt.size = Size(100,70);
rrt.angle = 0.0;
ellipse(image, rrt, Scalar(0, 255, 255), 2, 8);
Mat dst;
addWeighted(image,0.7, bg,0.3,0,dst);//可以融合两张图,第一张图占比多少,第二章图占比多少,
imshow("绘制演示", dst);
}
随机画线
void QuickDemo::random_drawing_demo(){
Mat canvas = Mat::zeros(Size(512,512),CV_8UC3); //新建一个图像
int w = canvas.cols;
int h = canvas.rows;
RNG rng(12345);//随机数
while (true) {
int c = waitKey(50); //此处等待100ms,如果实际视频分析的话,永远为waitKey(1);
if (c == 27) { // 按键Esc,退出
break;
}
int x1 = rng.uniform(0, w);
int y1 = rng.uniform(0, h);
int x2 = rng.uniform(0, w);
int y2 = rng.uniform(0, h);
int b = rng.uniform(0, 255);
int g = rng.uniform(0, 255);
int r = rng.uniform(0, 255);
/*canvas = Scalar(0,0,0);*/
line(canvas, Point(x1, y1), Point(x2, y2), Scalar(b, g, r), 1, LINE_AA, 0);//绘制线
imshow("随机绘制演示", canvas);
}
}
最后
以上就是无心汉堡为你收集整理的OpenCV4学习记录 图像几何图形绘制 矩形rectangle、圆形circle、线line、椭圆ellipse,随机数、随机颜色的全部内容,希望文章能够帮你解决OpenCV4学习记录 图像几何图形绘制 矩形rectangle、圆形circle、线line、椭圆ellipse,随机数、随机颜色所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复