openCV学习3-绘制形状、文字

绘制直线,矩形,椭圆,圆,多边形,随机画线。

#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;
}

猜你喜欢

转载自blog.csdn.net/qq_39396954/article/details/80503125