【图像处理】08绘制形状和文字

基础知识

【图像处理】08绘制形状和文字

【图像处理】08绘制形状和文字

/////////////////////////////////代码复制可以直接使用。

 

#include <opencv2/opencv.hpp>

#include <iostream>

using namespace cv;

using namespace std;

Mat bgImage;

const char* drawdemo_win = "draw shaps and text demo";

void MyLines();//画线

void MyRectangle();//画矩形

void MyEllipse();//绘制椭圆

void MyCircle();//绘制圆

void MyPolygon();//画多边形

void RandomLineDemo();//随机画线

int main(int argc, char** argv)

{

     bgImage = imread("C:/daima practice/opencv/mat1/mat1/image3.jpg");

     if (!bgImage.data)

     {

           printf("could not load image3...\n");

           return -1;

     }

///////////////这里开始调用写好的每一个函数

     //MyLines();//【函数1】调用画线函数

     //MyRectangle();//【函数2】调用画矩形函数

    // MyEllipse();//【函数3】绘制椭圆

     //MyCircle();//【函数4】绘制圆

     //MyPolygon();//【函数5】画多边形

     //【函数6】图片上打印一行字

     //参数结解释:参数1:图片参数2:文字参数 3:位置 参数4:字体 参数5: 参数6:颜色 参数7:字体粗细 参数8:

     //putText(bgImage,"hello opencv",Point(300,300),CV_FONT_HERSHEY_SCRIPT_COMPLEX,1.0,Scalar(12,23,200),1,8);

     

     //【函数7】

     RandomLineDemo();

     namedWindow(drawdemo_win,CV_WINDOW_AUTOSIZE);

     imshow(drawdemo_win,bgImage);

     waitKey(0);

     return 0;

}

//【函数实现1】画线函数

void MyLines()

{

     Point p1 = Point(20,30);

     Point p2;

     p2.x = 300;

     p2.y = 300;

     Scalar color = Scalar(0,0,255);

     line(bgImage,p1,p2,color,1,8);

}

//【函数实现2】绘制矩形

void MyRectangle()

{

     Rect rect = Rect(200,25,90,90);//表示x,y,宽,高。

     Scalar color = Scalar(255,0,0);

     rectangle(bgImage,rect,color,2,8);

}

//【函数实现3】

void MyEllipse()//绘制椭圆

{

     Scalar color = Scalar(0,255,0);//设置线颜色

     ellipse(bgImage,Point(bgImage.cols/2,bgImage.rows/2),Point(bgImage.cols/4,bgImage.rows/8),45,0,360,color,2,8);

}

//【函数实现4】

void MyCircle()//绘制圆

{

     Rect rect = Rect(200,100,300,300);

     Scalar color = Scalar(0,0,255);

     Point center = Point(bgImage.cols/2,bgImage.rows/2);

     circle(bgImage,center,150,color,2,8);//150半径,颜色8,

}

//【函数实现5】

void MyPolygon()//绘制多边形

{

     Point pts[1][5];

     pts[0][0] = Point(100,100);

     pts[0][1] = Point(100,200);

     pts[0][2] = Point(200,200);

     pts[0][3] = Point(200,100);

     pts[0][4] = Point(100,100);

     const Point* ppts[] = { pts[0] };

     int npt[]  = {5};

     Scalar color = Scalar(255,12,255);

     fillPoly(bgImage,ppts,npt,1,color,8);

}

//【函数实现6】

void RandomLineDemo()//绘制随机图像

{

     RNG rng(12345);

     Point pt1;

     Point pt2;

     Mat bg = Mat::zeros(bgImage.size(),bgImage.type());

     namedWindow("random line demo",CV_WINDOW_AUTOSIZE);

     for(int i = 0;i < 100000; i++)

     {

           pt1.x = rng.uniform(0,bgImage.cols);

           pt2.x = rng.uniform(0,bgImage.cols);

           pt1.y = rng.uniform(0,bgImage.rows);

           pt2.y = rng.uniform(0,bgImage.rows);

           Scalar color = Scalar(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255));

     if(waitKey(50)>0)

     {

           break;

     }

     line(bg,pt1,pt2,color,1,8);

     

     imshow("random line demo",bg);

     }

}