//画线
void DrawLine(Mat m)
{
Point pt1(20,30);
Point pt2(80,80);
Scalar color(0,0,255);
line(m,pt1,pt2,color,1,LINE_AA);
}
void DrawRectangle(Mat m)
{
Rect rect(100,100,200,200);
Scalar color(0,255,0);
rectangle(m,rect,color,2,LINE_8);//画矩形
}
//画椭圆
void DrawEllipse(Mat m)
{
Scalar color(0,255,0);
ellipse(m,Point(m.cols/2,m.rows/2),Size(m.cols/4,m.rows/8),180,0,180,color,1,LINE_AA);
}
void DrawCircle(Mat m)
{
Scalar color(0,255,0);
Point pt(m.cols/2,m.rows/2);
circle(m,pt,150,color,3,LINE_AA);
}
//画多边形
void DrawPolygon(Mat m)
{
Point pts[1][5];
pts[0][0]=Point(100,100);
pts[0][1]=Point(100,200);
pts[0][2]=Point(250,200);
pts[0][3]=Point(300,100);
pts[0][4]=Point(100,100);
const Point *ppts[]={pts[0]};
int npt[]={5};
Scalar color(0,255,0);
Scalar color1(0,0,255);
fillPoly(m,ppts,npt,1,color,8);
//画文本
putText(m,"hello mm",Point(50,50),CV_FONT_NORMAL,2.0,color1,3,16);
}
void DrawRandomLine(Mat m)
{
RNG rng(123456);//随机数
Point pt1;
Point pt2;
Mat m1=Mat::zeros(m.size(),m.type());
int i=1000;
while (i) {
pt1.x=rng.uniform(0,m.cols);
pt1.y=rng.uniform(0,m.rows);
pt2.x=rng.uniform(0,m.cols);
pt2.y=rng.uniform(0,m.rows);
Scalar color=Scalar(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255));
line(m1,pt1,pt2,color,1,LINE_8);
imshow("m1",m1);
--i;
}
}
int main()
{
Mat src=imread("./1/3.jpg");
if(!src.data)
return -1;
// DrawLine(src);
// DrawRectangle(src);
// DrawEllipse(src);
// DrawCircle(src);
// DrawPolygon(src);
DrawRandomLine(src);
imshow("src",src);
}
opencv 绘制形状和文字文字
最新推荐文章于 2024-03-10 14:42:32 发布