绘制直线,矩形,椭圆,圆,多边形,随机画线。
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\objdetect\objdetect.hpp> #include <opencv2\imgproc\types_c.h> #include <opencv2\objdetect\objdetect_c.h> #include<opencv2/opencv.hpp> #include <opencv2/imgproc/types_c.h> #include <opencv2\objdetect\objdetect_c.h> #include<iostream> #include<cmath> #include<cstdio> using namespace std; using namespace cv; Mat img; const char* draw="draw demo!"; void lines() { Point p1=Point(20,30); Point p2; p2.x=300; p2.y=300; Scalar color=Scalar(0,0,255);//红色 line(img,p1,p2,color,1,LINE_8); } void rectangle() { Rect rect=Rect(50,25,100,80); Scalar color=Scalar(255,0,0);//蓝色 rectangle(img,rect,color,2,LINE_AA);//lineaa反锯齿 } void ellipse() { Scalar color=Scalar(0,255,0); ellipse(img,Point(img.cols/2,img.rows/2),Size(img.cols/4,img.rows/8),45,0,200,color,2,LINE_8); //中心xy,长轴短轴,倾斜角度,弧线角度,颜色 } void Circle() { Scalar color=Scalar(0,255,255); Point center=Point(img.cols/2,img.rows/2); circle(img,center,50,color,2,8); } void polygon() { 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(img,ppts,npt,1,color,8); } void randdemo() { RNG rng(12345); Point pt1; Point pt2; Mat bg=Mat::zeros(img.size(),img.type()); namedWindow(draw,1); for(int i=0;i<100000;i++) { pt1.x=rng.uniform(0,img.cols); pt2.x=rng.uniform(0,img.cols); pt1.y=rng.uniform(0,img.rows); pt2.y=rng.uniform(0,img.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(draw,bg); } } int main() { img=imread("milk.jpg"); if(img.empty()) { cout<<"!!???"<<endl; return -1; } /*lines(); rectangle(); ellipse(); Circle(); polygon(); putText(img,"Hello opencv",Point(50,50),FONT_HERSHEY_COMPLEX,1.0,Scalar(12,255,200),1,8); namedWindow(draw,1); imshow(draw,img);*/ randdemo(); waitKey(0); return 0; }