1. 程式人生 > >opecv基本繪圖

opecv基本繪圖


#include <iostream>
#include <opencv2/highgui.hpp>
#include <cv.h>
#include <imgproc/imgproc.hpp>
#include <core/core.hpp>
#include <highgui.h>
#include <vector>
#include <opencv2/objdetect/objdetect.hpp>
#define w 400
using namespace std;
using namespace cv;

void MyEllipse(Mat img, double angle);
void MyFilledCircle(Mat img, Point center);
void MyPolygon(Mat img);
void MyLine(Mat img, Point start, Point end);


int main()
{
	char atom_window[] = "Drawing 1:Atom";
	char rook_window[] = "Drawing 2:Rook";

	Mat atom_image = Mat::zeros(w, w, CV_8UC3);
	Mat rook_image = Mat::zeros(w, w, CV_8UC3);

	//tuoyuan
	MyEllipse(atom_image, 90);
	MyEllipse(atom_image, 0);
	MyEllipse(atom_image, -45);
	MyEllipse(atom_image, 45);

	MyFilledCircle(atom_image, Point(w / 2, w / 2));
	
	MyPolygon(rook_image);

	rectangle(rook_image, Point(0, 7 * w / 8),Point(w,w),Scalar(0,255,255),-1,8);

	MyLine(rook_image, Point(0, 15 * w / 16), Point(w, 15 * w / 16));
	MyLine(rook_image, Point(w / 4, 7 * w / 8), Point(w / 4, w));
	MyLine(rook_image, Point(w / 2, 7 * w / 8), Point(w / 2, w));
	MyLine(rook_image, Point(3 * w / 4, 7 * w / 8), Point(3 * w / 4, w));

	imshow(atom_window, atom_image);
	moveWindow(atom_window, 0, 200);
	
	imshow(rook_window, rook_image);
	moveWindow(rook_window, w, 200);



	waitKey();
	return 0;
}
void MyEllipse(Mat img,double angle)
{
	int thickness = 2;
	int lineType = 8;

	ellipse(img, Point(w / 2, w / 2),Size(w/4,w/16),angle,0,360,Scalar(255,0,0),thickness,lineType);
}
void MyFilledCircle(Mat img, Point center)
{
	int thickness = 2;
	int lineType = 1;

	circle(img, center, w / 32, Scalar(43,219, 255), thickness, lineType);
}
void MyPolygon(Mat img)
{
	int lineType = 8;

	Point rook_points[1][20];
	rook_points[0][0] = Point(w / 4, 7 * w / 8);
	rook_points[0][1] = Point(3 * w / 4, 7 * w / 8);
	rook_points[0][2] = Point(3 * w / 4, 13 * w / 16);
	rook_points[0][3] = Point(11 * w / 16, 13 * w / 16);
	rook_points[0][4] = Point(19 * w / 32, 3 * w / 8);
	rook_points[0][5] = Point(3 * w / 4, 3*w / 8);
	rook_points[0][6] = Point(3 * w / 4, w / 8);
	rook_points[0][7] = Point(26 * w / 40, w / 8);
	rook_points[0][8] = Point(26 * w / 40, w / 4);
	rook_points[0][9] = Point(22 * w / 40, w / 4);
	rook_points[0][10] = Point(22 * w / 40, w / 8);
	rook_points[0][11] = Point(18 * w / 40, w / 8);
	rook_points[0][12] = Point(18 * w / 40, w / 4);
	rook_points[0][13] = Point(14 * w / 40, w / 4);
	rook_points[0][14] = Point(14 * w / 40, w / 8);
	rook_points[0][15] = Point(w / 4, w / 8);
	rook_points[0][16] = Point(w / 4, 3 * w / 8);
	rook_points[0][17] = Point(13 * w / 32, 3 * w / 8);
	rook_points[0][18] = Point(5 * w / 16, 13 * w / 16);
	rook_points[0][19] = Point(w / 4, 13 * w / 16);

	const Point*ppt[1] = { rook_points[0] };
	int npt[] = { 20 };
	fillPoly(img, ppt, npt, 1, Scalar(255, 255, 255), lineType);
}

void MyLine(Mat img, Point start, Point end)
{
	int thickness = 2;
	int lineTyep = 8;
	line(img, start, end, Scalar(0, 0, 0), thickness, lineTyep);
}