【图像处理】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); } }
|