rect

生成缩略图

匿名 (未验证) 提交于 2019-12-03 00:22:01
废话不多说,直接上代码 /** @param image 传入图片 @param asize 需求的大小 @return 缩略图 +( UIImage *)thumbnailWithImageWithoutScale:( UIImage *)image size:( CGSize )asize { UIImage *newimage; if ( nil == image) { nil ; else { CGSize oldsize = image. size ; CGRect rect; if (asize. width /asize. height > oldsize. width /oldsize. height ) { size . width = asize. height *oldsize. width /oldsize. height ; size . height = asize. height ; origin . x = (asize. width - rect. size . width )/ 2 ; origin . y = 0 ; else { size . width = asize. width ; size . height = asize. width *oldsize. height /oldsize. width ; origin . x = 0

unity EditorWindow通过拖拽获取文件夹或者文件路径

匿名 (未验证) 提交于 2019-12-03 00:22:01
参考: https://blog.csdn.net/lyh916/article/details/45133101 主要就是Event、DragAndDrop的使用了。 void OnGUI() { targetGo = (GameObject)EditorGUILayout .ObjectField (targetGo, typeof(GameObject), true) ; subPath = targetGo == null ? subPath : targetGo .name ; EditorGUILayout .LabelField (string .Format ( "保存路径output path:{0}" , Path .Combine (path, subPath))) ; //获得一个长 300 的框 Rect rect = EditorGUILayout .GetControlRect (GUILayout .Width ( 300 )) ; //将上面的框作为文本输入框 path = EditorGUI .TextField (rect, path) ; subPath = EditorGUILayout .TextField (subPath) ; //如果鼠标正在拖拽中或拖拽结束时,并且鼠标所在位置在文本输入框内 if ((Event .current

OpenCV学习笔记-边界矩形

匿名 (未验证) 提交于 2019-12-03 00:21:02
有两类边界 矩形 ,直边界 矩形 和旋转的边界 矩形 。 直边界 矩形 :一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。所以边界 矩形 的面积不是最小的。使用函数cv.boundingRect()查找得到。 (x, y)为 矩形 左上角的坐标,(w, h)是 矩形 的宽和高。 x, y, w, h = cv.boundingRect(contour) img = cv.rectangle(img, (x, y), (x+w, y+h), ( 0 , 0 , 255 ), 2 ) 旋转的边界 矩形 :这个边界 矩形 的面积是最小的,因为它考虑了对象的旋转。我们用cv.minAreaRect()生成最小外接 矩形 。返回的是一个Box2D结构,其中包含了矩形左上角角点的坐标(x, y), 矩阵的宽和高(w, h),以及旋转角度。但是要绘制这个矩形需要矩形的四个角点,可以通过函数cv.boxPoints()获得。box:[[x1, y1],[x2, y2],[x3, y3],[x4, y4]] 最小外接矩形的4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形势,不是弧度数)的对应关系如下: 注意:旋转角度θ是水平轴(x轴)逆时针旋转,与碰到的矩形的第一条边的夹角。并且这个边的边长是width,另一个边的边长是height。也就是说,在这里

OpenCV学习笔记(二十一)――简单的单目视觉测距尝试

匿名 (未验证) 提交于 2019-12-03 00:21:02
文章地址 。在这里呢,自己尝试把他复现了一下,过程不难,十分简单,不过呢,精度也凑合。 已知物体的测量方法是指在已知物体信息的条件下利用摄像机获得的目标图片得到深度信息。此类方法主要应用于单目视觉进行导航和定位,该类方法的缺点是利用单个特征点进行测量,容易因特征点提取的不准确性,产生误差。 现实中的物体的成像我们也可以表示为如下所示: 据此, 我们将使用相似三角形来计算相机到一个已知的物体或者目标的距离。 举个例子,假设我在离相机距离 D = 24 英寸的地方放一张标准的 8.5 x 11 英寸的 A4 纸(横着放;W = 11)并且拍下一张照片。我测量出照片中 A4 纸的像素宽度为 P = 249 像素。 因此我的焦距 F 是: 当我继续将我的相机移动靠近或者离远物体或者目标时,我可以用相似三角形来计算出物体离相机的距离: 为了更具体,我们再举个例子,假设我将相机移到距离目标 3 英尺(或者说 36 英寸)的地方并且拍下上述的 A4 纸。通过自动的图形处理我可以获得图片中 A4 纸的像素距离为 170 像素。将这个代入公式得: 或者约 36 英寸,合 3 英尺。 从以上的解释中,我们可以看到,要想得到距离,我们就要知道摄像头的焦距和目标物体的尺寸大小,这两个已知条件根据公式:   得出目标到摄像机的距离D,其中P是指像素距离,W是A4纸的宽度,F是摄像机焦距。   接下来

OpenCV-坐标转换

匿名 (未验证) 提交于 2019-12-03 00:18:01
在目标检测中,图像标注一般是4个顶点坐标或者是bbox的中心坐标、宽高和旋转角度,在特定的处理函数中会用到不同的标注方法,这时就需要对坐标进行转换,具体方法如下 # -*- coding: utf-8 -*- from __future__ import absolute_import from __future__ import division from __future__ import print_function import cv2 import numpy as np def forward_convert (coordinate, with_label=True) : """ :param coordinate: format [y_c, x_c, h, w, theta] :return: format [y1, x1, y2, x2, y3, x3, y4, x4] """ boxes = [] if with_label: for rect in coordinate: box = cv2.boxPoints(((rect[ 1 ], rect[ 0 ]), (rect[ 3 ], rect[ 2 ]), rect[ 4 ])) box = np.reshape(box, [- 1 , ]) boxes.append([box[ 1 ], box[ 0 ],

自定义日历(四)-区间选择控件

匿名 (未验证) 提交于 2019-12-03 00:16:01
Ŀ¼ 1、QPickDate 2、QDatePanel 3、QDateWidget、QDateContent 原文链接: 自定义日历(四)-区间选择控件 很早很早以前,写过几篇关于日历的文章,不同于Qt原生的控件,这些控件都是博主使用自绘的方式进行完成,因此可定制性更强一些,感兴趣的可以参考 自定义日历(一) 、 自定义日历(二) 和 自定义日历(三)) 。 本篇文章还是继续来写我们的日历控件,仍然采用自绘的方式,带来更加炫酷的效果。看本文的标题就应该就能明白,这次实现的是一个可以区间选择的日历控件。 效果图如下,一个简单的效果展示。 日历控件与Qt原生的QDateEdit一样,是由一个按钮进行触发,弹出如期选择面板。不同的是这个日历选择面板由2个小的日期面板组成,分别是开始和结束日期,规则如下: 开始日期必须小于结束日期 顶部有快速返回按钮 选中的日期段上有高亮背景色 选中的日期点上有蓝色圆形标识 点击确定按钮以后日期选择面板关闭 开始讲解具体内容之前,先来看下整体的结构划分,实现这个日期段选择控件,总共需要以下4个类,下图是工程结构 以下是4个类的说明 QDateContent:单个日历窗口 QDateWidget:包含了年月选择的单个日历窗口 QDatePanel:日期段选择面板 QPickDate:日期选择按钮,用于呼出日期选择面板 其中QPickDate类就是对外使用的类

UGUI在两个UI间坐标转换

匿名 (未验证) 提交于 2019-12-03 00:14:01
在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下。 或者在同一个界面下,从不同的节点下,转成相同的坐标。 函数定义 public static bool ScreenPointToLocalPointInRectangle ( RectTransform rect , Vector2 screenPoint , Camera cam , out Vector2 localPoint ); 解释: rect: 目标界面的节点 screenPoint: 要转换的节点屏幕坐标,如果worldCamera为空就返回 vector2.zero cam: 目标界面的camera,如果 Canvas 的模式为Screen Space - Overlay mode, the cam parameter should be null. localPoint: 转换后的坐标点 返回值: 判断此点是否在Rect所在的平面上 最后算出来的结果使用:rectTransform.anchoredPosition = localPoint 要转的节点屏幕坐标 var screenPoint = canvas.worldCamera.WorldToScreenpoint(obj.transform.position) 通过查看ugui的Slider(滑块)源码

怎样绘制一个与两条直线相切的圆弧

匿名 (未验证) 提交于 2019-12-03 00:11:01
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <canvas id="canv" width="300" height="300"></canvas> <script> function draw() { var canvas = document.getElementById('canv'); if (!canvas.getContext) return; var ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(50, 50); //参数1、2:控制点1坐标 参数3、4:控制点2坐标 参数4:圆弧半径 ctx.arcTo(200, 50, 200, 200, 140); ctx.lineTo(200, 200) ctx.stroke(); // 绘制控制点 ctx.beginPath(); ctx.rect(50, 50, 5, 5); ctx.rect(200, 50, 5, 5) ctx.rect(200, 200, 5, 5) ctx.fill(); } draw(); </script> </body> </html> 注意: 1. ctx

使用dilb实现人脸检测、识别

匿名 (未验证) 提交于 2019-12-03 00:08:02
使用dlib实现人脸检测与识别需要先下载以下两个文件: 以下是检测代码: import dlib import numpy as np import cv2 detector = dlib . get_frontal_face_detector () # 加载正脸检测器,使用dlib sp = dlib . shape_predictor ( "dlibModel/shape_predictor_68_face_landmarks.dat" ) # 加载人脸关键点检测模型 facerec = dlib . face_recognition_model_v1 ( "dlibModel/dlib_face_recognition_resnet_model_v1.dat" ) # 加载人脸识别模型 images_file = "11.jpg" if __name__ == '__main__' : image = cv2 . imread ( images_file ) gray = cv2 . cvtColor ( image , cv2 . COLOR_BGR2GRAY ) rects = detector ( gray , 1 ) # 返回人脸,(灰度图,采样次数) tzs = [] for ( i , rect ) in enumerate ( rects ): shape68

【Flutter学习】之绘画实例(二)

匿名 (未验证) 提交于 2019-12-02 23:52:01
  Path 主要有方法如下:   直接描述路径的方法还可以细分为两组:添加子图形和画线(直线或曲线) addXXX() - 添加子图形(由于此类方法参数与上面介绍的画简单图形一样,就不多赘述了) addArc(Rect oval, double startAngle, double sweepAngle) - 添加圆弧 addOval(Rect oval) - 添加圆 addPolygon(List<Offset> points, bool close) - 添加一个由点的集合描述的多边形 addRect(Rect rect) - 添加矩形 addRRect(Rect rect) - 添加圆角矩形 addPath(Path path, Offset offset) - 添加子路径 XXXTo() - 画线(直线或曲线)   这个方法通过描述路径的方式来绘制图形,用法大概是这样: Path _path = Path(); @override void paint(Canvas canvas, Size size) { _paint.style = PaintingStyle.stroke; // 画线模式 _path.addArc(new Rect.fromLTWH(50, 50, 50, 50), 135.0 * (pi / 180.0), 225.0 * (pi / 180.0