精华内容
下载资源
问答
  • python opencv minAreaRect 生成最小外接矩形

    万次阅读 多人点赞 2017-08-03 11:05:33
    使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是点集数组或向量(里面存放的是点的坐标),并且这个点集中的元素不定个数。 2、举例说明: 画一个任意四边形(任意多边形都...

    方法

    使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是点集数组或向量(里面存放的是点的坐标),并且这个点集中的元素不定个数。

    举例说明

    画一个任意四边形(任意多边形都可以)的最小外接矩形,那么点集 cnt 存放的就是该四边形的4个顶点坐标(点集里面有4个点)

    cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) # 必须是array数组的形式
    rect = cv2.minAreaRect(cnt) # 得到最小外接矩形的(中心(x,y), (宽,高), 旋转角度)
    box = cv2.cv.BoxPoints(rect) # 获取最小外接矩形的4个顶点坐标(ps: cv2.boxPoints(rect) for OpenCV 3.x)
    box = np.int0(box)
    # 画出来
    cv2.drawContours(img, [box], 0, (255, 0, 0), 1)
    cv2.imwrite('contours.png', img)

    函数 cv2.minAreaRect() 返回一个Box2D结构rect:(最小外接矩形的中心(x,y),(宽度,高度),旋转角度),但是要绘制这个矩形,我们需要矩形的4个顶点坐标box, 通过函数 cv2.cv.BoxPoints() 获得,返回形式[ [x0,y0], [x1,y1], [x2,y2], [x3,y3] ]。得到的最小外接矩形的4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形式,不是弧度数)的对应关系如下:

    注意:

    • 旋转角度θ是水平轴(x轴)逆时针旋转,直到碰到矩形的第一条边停住,此时该边与水平轴的夹角。并且这个边的边长是width,另一条边边长是height。也就是说,在这里,width与height不是按照长短来定义的。
    • 在opencv中,坐标系原点在左上角,相对于x轴,逆时针旋转角度为负,顺时针旋转角度为正。所以,θ∈(-90度,0]。

     

     

     

    展开全文
  • 矩形切割

    千次阅读 2020-02-07 17:41:38
    矩形切割 第十届蓝桥省赛 Java 大学 C 组 【问题描述】 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后...

    矩形切割 第十届蓝桥省赛 Java 大学 C 组

    【问题描述】
    小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
    当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。 例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。 现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会 切出多少个正方形?
    【答案提交】
    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分

    思路:刚看这个题,我的老天,什么玩意 ,看不懂-.-#
    就在这个时候,我的亲故给我说,可以画一画,结果……
    仔细看题要求,其实就是,5/3,3/2,2/1,1/1。结束……

    public class Main {
    	public static void main(String[] args) {
    		int x = 2019, y = 324, count = 0;    //两个边长给成x,y,用count统计
    		while (x > 0 || y > 0) {             //两边大于0,进入循环体
    			if (x > y) {                     //2019>324
    				x -= y;                      //2019-=324
    				count++;                     //累加次数
    			}
    			if (x < y) {                     //2019<324
    				y -= x;                      //324-=x;  (划重点!!)
    				count++;                     //累加次数
    			}
    			if (x == y) {                    //减到x,y相同时,正方形就出来了!!
    				count++;                     //累加次数
    				System.out.println(count);   //输出结果21
    				return;                      //再问,打死!!
    			}
    		}
    	}
    }
    

    数学 画图解法看这里

    在这里插入图片描述

    展开全文
  • 设计单片机的Proteus仿真电路,实现如下功能:P1口控制8个发光二极管,P0连接数码管;利用定时器/计数器T0产生定时,采用中断方式,让8个发光二极管每隔...系统的晶振频率为12MHz,用Proteus仿真验证如下连续矩形脉冲。

    Description

    设计单片机的Proteus仿真电路,实现如下功能:

    1. P1口控制8个发光二极管,P0连接数码管
    2. 利用定时器/计数器T0产生定时,采用中断方式,让8个发光二极管每隔1s依次点亮,全亮后全灭,再次开始循环
    3. 数码管从1开始,每点亮一个发光二极管,显示+1,显示9时二极管全灭,再次开始循环
    4. 系统的晶振频率fosc=12MHzf_{osc}=12MHz,用Proteus仿真验证如下连续矩形脉冲
      在这里插入图片描述

    实验电路图

    在这里插入图片描述

    实验分析

    1. 八个发光二极管每隔1s依次点亮,同时数码管从1显示到8,9时全灭,然后不断循环。采用定时器0中断,事先写好依次点亮时的八种状态,然后每隔一秒P1变换到下一个状态。
    2. 高电平40ms,低电平360ms,采用定时器1中断,每次定时40ms,40ms时由高电平到低电平,400ms时候翻转即可。

    源程序

    #include<reg52.h>
    #include<intrins.h>
    #define uint unsigned int
    #define uchar unsigned char
    	
    uchar t = 0, cnt = 1, n;
    sbit wave = P2^7;
    bit flag;
    uchar code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};  //0-9
    uchar code LED_CODE[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //依次点亮
    
    void init_time0() {
    	P1 = LED_CODE[cnt - 1];
    	P0 = DSY_CODE[cnt];
    	TMOD = 0x01; //设置T0为定时器模式,工作方式在1
    	EA = 1;
    	ET0 = 1;
    	TR0 = 1;
    }
    
    void init_time1() {
    	TMOD = 0x11;
    	EA = 1;
    	ET1 = 1;
    	TR1 = 1;
    	wave = 1;  //高电平
    	flag = 1;
    }
    
    void time0() interrupt 1 {   //定时器0中断服务程序
    	TH0=(65536-50000) / 256;
      TL0=(65536-50000) % 256;
    	if(++t == 20) {  //1s
    		t = 0;
    		cnt++;
    		P1 = LED_CODE[cnt - 1];
    		P0 = DSY_CODE[cnt];
    		if(cnt == 9) {
    			P1 = 0xff;
    			cnt = 0;
    		}
    	}
    }
    
    void timer1() interrupt 3 {
    	TH1=(65536-40000) / 256;  //40ms高电平
      TL1=(65536-40000) % 256;
    	if(flag) {
    		wave = ~wave;   //变为低电平
    		flag = 0;
    	}
    	n++;
    	if(n == 10) {   //400ms时候,此时低电平已经持续360ms,翻转
    		n = 0;
    		wave = ~wave;
    		flag = 1;
    	}
    }
    
    void main() {
    	init_time0();
    	init_time1();
    	while(1);
    }
    

    附录

    矩形脉冲截图如下:
    在这里插入图片描述
    高电平:-760-(-800)=40ms,低电平:-400-(-760)=360ms。

    展开全文
  • Qt的坐标与我们常见的坐标不同,如图,假设下图的矩形就是我们的窗口,矩形左上角顶点即为坐标原点: 绘制矩形 核心代码: paint-&gt;drawRect(20,20,160,160); 第1、2个参数制定矩形的左上角起点,...

    首先介绍一下Qt的坐标机制:
    Qt的坐标与我们常见的坐标不同,如图,假设下图的矩形就是我们的窗口,矩形左上角顶点即为坐标原点:
    这里写图片描述

    绘制矩形
    核心代码:

     paint->drawRect(20,20,160,160); 
    

    第1、2个参数制定矩形的左上角起点,第3个参数制定矩形的长度,第4个参数指定矩形的宽度

    绘制圆和椭圆
    核心代码:

    paint->setPen(QPen(Qt::blue,4,Qt::SolidLine));
    paint->drawEllipse(20,20,210,160);
    

    第1,2个参数表示圆/椭圆距屏幕左上角的像素数。第3,4个参数表示圆/椭圆的宽度和高度,两者相同时为圆。更加确切地表述,这个圆或椭圆是在矩形中,这个矩形的左上角的顶点在坐标轴中的位置为(20,20),这个圆或椭圆的中心为这个矩形的中心

    绘制圆角矩形
    核心代码:

    paint->setPen(QPen(Qt::blue,4,Qt::SolidLine));
    paint->drawRoundRect(20,20,210,160,50,50);
    

    前面四个参数和绘制矩形的参数一致,最后两个参数决定角的圆度。它可以为0到99之间的任意值(99代表最圆)。

    绘制扇形图
    核心代码:

    QRectF rectangle(10.0, 20.0, 80.0, 60.0);//设定扇形所在的矩形,扇形画在矩形内部
    int startAngle = 30 * 16;//起始角度,角度可以为负值,如-30*16
    int spanAngle = 120 * 16;//覆盖的角度,绘制方向为逆时针方向
    QPainter painter(this);
    painter.drawPie(rectangle, startAngle, spanAngle);
    

    前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),500为扇形所展开的角度(单位也为1/16度)。
    这里写图片描述

    绘制弦
    核心代码:

    paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    paint->drawChord(20,20,210,160,500,1000);
    

    drawChord()函数与drawPie()函数的参数完全相同。
    这里写图片描述

    绘制圆弧
    核心代码:

    paint->setPen(QPen(Qt::green,4,Qt::SolidLine));
    paint->drawArc(20,20,210,160,500,1000);
    

    drawArc()函数与drawPie()函数的参数完全相同。
    这里写图片描述

    展开全文
  • 因为设置了 “羽化” 属性 你看看编辑栏上面有个“羽化” 羽化:0是直角,数值越大,角越圆 以上就是关于 “ ps 里的矩形选框工具怎么变成圆角矩形了? ” 的全部内容。 ...
  • //矩形碰撞检测,设矩形的左上顶点是(x, y), 宽w, 高h, 那么只要存在以下情况一定不相交, 否则是相交的 function rectangleCol(x1,y1,w1,h1,x2,y2,w2,h2){ var maxX,maxY,minX,minY; maxX = x1+w1 &gt;= x2+...
  • 矩形分割

    千次阅读 2018-05-16 18:18:28
    总时间限制: 1000ms内存限制: 65536kB描述平面上有一个大矩形,其左下角坐标(0,0),右上角坐标(R,R)。大矩形内部包含一些小矩形,小矩形都平行于坐标轴且互不重叠。所有矩形的顶点都是整点。要求画一根平行于y...
  • 1、移动矩形 2、判断一个点是否在矩形内部 3、求两个矩形合并后的矩形,通过函数返回值返回代表合并后矩形的一个新建立的矩形 对象 4、求两个矩形交集,通过函数返回值返回代表两个矩形交集的一个新建立的矩形...
  • 矩形覆盖

    2018-07-24 09:19:45
    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? public class Solution { public int RectCover(int target) { if(target&lt;...
  • 矩形

    千次阅读 2018-12-11 22:22:29
    输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。 ...
  • 矩形问题

    2017-06-04 12:53:32
    现给你若干矩形矩形的边都平行于x轴和y轴,请你编程计算被其他矩形包含在内部的矩形的个数(如果内部的矩形的边与外部的矩形的边重合,也算作正确的结果)。 输入描述 输入包含多组测试数据。每组输入第一行是一...
  • 线段与矩形 是否相交 矩形矩形

    千次阅读 2012-05-11 14:17:43
     功能:判断线段和矩形是否相交   先判断线段的俩个端点是否在矩形的内部,在就必然相交    其次判断线段的包围盒是否和矩形相交,不相交的话线段和矩形肯定也不相交    最后判断,矩形的四个顶点是否位于...
  • 本博客主要介绍OpenCV中的多个矩形框的排序,矩形的排序主要有:以起始坐标x轴大小排序、以起始坐标y轴排序、以矩形面积排序等。本博客主要是以矩形面积进行排序。主要代码如下:
  • 矩形嵌套

    千次阅读 2016-02-19 17:18:22
    有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a,b或者b,a(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的...
  • 编写矩形类 计算矩形面积

    千次阅读 2016-03-04 22:46:00
    编写矩形类 计算矩形面积 public class juxing { int a; int b; juxing(int a,int b) { System.out.println("矩形面积s=" + (a*b)); }...
  • java矩形的关系

    万次阅读 多人点赞 2019-07-30 14:42:51
    在编写图形界面软件的时候,经常会遇到处理两个矩形的关系。 如图【1.jpg】所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看【2.jpg】)。 两个矩形的并集指的是:能包含这两个矩形的最小矩形...
  • 1.旋转矩形 说明: 一个矩形绕着中心点旋转任意角度后得到一个旋转的矩形。 我参考了这篇文章里xuzuning的方法,写一个旋转矩形的方法。 旋转矩形代码: private void Rect2Pointfs(Rectangle rect, float ...
  • 最小的矩形

    2017-03-25 20:58:44
    现在牛牛想画出一个矩形,使得这N个点都在矩形内或者在矩形上。 矩形的边均平行于坐标轴。牛牛希望矩形的面积最小。请你帮助牛牛计算下最小矩形的面积。 输入描述: 首先输入一个正整数N表示点的个数(2 )接下来N...
  • 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的...
  • #include <stdio.h> float main(void) { float a,b; printf("请输入矩形的长和宽:\n"); scanf("%f,%f",&a,&b); printf("该矩形的面积为:%f\n",a*b); return 0; }
  • 平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。 如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。 请你计算出平面内重叠矩形数量最多的地方,...
  • 矩形面积

    千次阅读 2016-01-24 21:17:59
    对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式  输入仅包含两行,每行描述一个矩形。  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不...
  • Qt矩形绘制

    千次阅读 2020-04-28 10:36:07
    Qt矩形绘制 开发工具与关键技术:QtCreator、C++ 作者:何任贤 撰写时间:2019年04月25日 我这个矩形绘制是类绘图软件的矩形绘制,我写了一个简单的例子,达到绘图软件的绘制矩形的效果。 首先要做的是重写四个...
  • Java实现分割矩形

    万次阅读 多人点赞 2019-07-20 18:17:22
    给定平面内平行于坐标轴的一个矩形,从矩形内选 择一些点,从这些点向右和向上各射出一条射线, 请问:这些射线将矩形分成了多少份。 数据格式: 输入的第一行包含两个整数x, y,表示矩形是由(0, 0), (x, 0), (x, y)...
  • 矩形选框工具和矩形工具的区别

    千次阅读 2018-05-09 17:40:07
    矩形选框工具--是一个选择工具,可以在图片上任意选取一个矩形面积,进行剪切、填色、修改颜色等处理。矩形工具--是一个矢量的图形绘制工具。一般情况下,是通过对矢量工具画出的图形转化为“选择”,应用到图层中...
  • 矩形矩形圆的碰撞检测

    千次阅读 2018-08-31 14:49:22
    // 检测圆和矩形的碰撞 矩形的宽,高,中心点x,y 圆的半径,中心点血,y  IsComputeCollision(jw, jh,jx,jy, rr, rx, ry) {  var _rx = rx - jx;  var _ry = ry - jy;  var dx = Math.min(_rx, jw * 0.5);  ...
  • openCV 画矩形框或填充矩形

    千次阅读 2017-10-12 11:41:10
    rectangle:画矩形 Draws a simple, thick, or filled up-right rectangle.画一个简单或填充的矩形 C++: void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8,...
  • 最小外接矩形--最大内接矩形

    千次阅读 2020-01-09 20:51:44
    最小外接矩形 https://bitbucket.org/william_rusnack/minimumboundingbox/src/master/ 最大内接矩形 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,247
精华内容 34,898
关键字:

矩形