利用各种绘图函数来绘制原子图和塔型图

#include <iostream>
#include <opencv2/opencv.hpp>
#define WITH 600
#define  window1 "【原子图】"
#define  window2 "【塔型图】"
using namespace cv;
using namespace std;


//利用各种绘图函数来绘制原子图和组合图。




int main()
{
//原子图
	//1.创建一个正方图像。
	Mat image(WITH,WITH,CV_8UC3,Scalar(0,0,0));
	//2.在中心店画出圆形。cirlce函数。
	circle(image,Point(WITH/2,WITH/2),10,Scalar(0,0,255),-1);
	//3.以中心点画出四个角度的椭圆。ellipse函数。
	ellipse(image,Point(WITH/2,WITH/2),Size(WITH/4,WITH/16),0,0,360,Scalar(0,255,0),3);
	ellipse(image,Point(WITH/2,WITH/2),Size(WITH/4,WITH/16),45,0,360,Scalar(0,255,0),3);
	ellipse(image,Point(WITH/2,WITH/2),Size(WITH/4,WITH/16),90,0,360,Scalar(0,255,0),3);
	ellipse(image,Point(WITH/2,WITH/2),Size(WITH/4,WITH/16),135,0,360,Scalar(0,255,0),3);//其中size表示短轴和长轴。
	
	namedWindow(window1);
	imshow(window1,image);

//塔型图
	//1.先确定塔的各个拐点。
	//1.1塔顶在(1/2,7/8)处。
	//1.2塔尖的边沿两边分别在,y=6/8  x:2/8和 6/8
	//1.3下边的主题  x=3/8 5/8 y= 6/8
	//1.4 y:2/8  x:2/8 6/8
	//1.5 最下边是矩形高台。
	
	Point pp[1][15] = { Point(4. / 8. * WITH,1. / 8. * WITH),
					 Point(2. / 8 * WITH,2. / 8. * WITH),Point(3. / 8 * WITH,2. / 8. * WITH),
					 Point(3. / 8 * WITH,6. / 8 * WITH),Point(2. / 8 * WITH,6. / 8. * WITH),Point(2. / 8. * WITH,7. / 8. * WITH),
					 Point(1./8*WITH,7./8*WITH) ,Point(1. / 8 * WITH,WITH),Point(7. / 8 * WITH,WITH),
				  Point(7. / 8 * WITH,WITH *  7. / 8),Point(6. / 8 * WITH,7. / 8. * WITH),Point(6. / 8. * WITH,6. / 8. * WITH),
				  Point(5. / 8 * WITH,6. / 8 * WITH),Point(5. / 8 * WITH,2. / 8. * WITH),Point(6. / 8. * WITH,2. / 8. * WITH) };

	const Point* px[] = {pp[0]};
	

	//fillploy函数。
	//2.用多边形函数将这些点连接起来。
	
	const int np[] = { 15};
	Mat image2(WITH, WITH, CV_8UC3, Scalar(2, 2, 0));
	fillPoly(image2,px,np,1,Scalar(255,0,255),8);//塔。
	//窗户
	line(image2,Point(3.5/8*WITH,3./8*WITH),Point(4.5/8*WITH,3./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(3.5/8*WITH,5./8*WITH),Point(4.5/8*WITH,5./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(3.5/8*WITH,3./8*WITH),Point(3.5/8*WITH,5./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(4.5/8*WITH,3./8*WITH),Point(4.5/8*WITH,5./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(4./8*WITH,5./8*WITH),Point(4./8*WITH,3./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(3.5/8*WITH,4./8*WITH),Point(4.5/8*WITH,4./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(3.5/8*WITH,3./8*WITH),Point(4.5/8*WITH,5./8*WITH),Scalar(255,255,0),3);
	line(image2,Point(3.5/8*WITH,5./8*WITH),Point(4.5/8*WITH,3./8*WITH),Scalar(255,255,0),3);
	imshow(window2,image2);
	
	waitKey(0);
	return 1;
	
}


在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值