radian

80行Python实现-HOG梯度特征提取(转载)

被刻印的时光 ゝ 提交于 2021-02-01 04:20:32
本文原文链接:https://blog.csdn.net/ppp8300885/article/details/71078555 本文用80行代码的Python实现了HOG算法,代码在Github Hog-feature,虽然OpenCV有实现好的Hog描述器算法,但是本文目的是完全理解HOG特征提取的具体方法和实现原理,以及检验相关参数对实验结果的影响,提升检测到的特征的性能以及优化代码的运行速度。 1. 方法简介 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的描述子。通过计算和统计局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。现如今如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 主要思想:在一幅图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。其本质是梯度的统计信息,而梯度主要存在于边缘所在的地方。 实现过程:简单来说,首先需要将图像分成小的连通区域,称之为细胞单元。然后采集细胞单元中各像素点的梯度或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。 算法优点:与其他的特征描述方法相比,HOG有较多优点

OpenCV3入门(十四)图像特效—挤压、哈哈镜、扭曲

佐手、 提交于 2021-01-14 07:26:12
一、图像挤压特效 1、原理 图像压效果本质的图像坐标的非线性变换,将图像向内挤压,挤压的过程产生压缩变形,从而形成的效果。 挤压效果的实现是通过极坐标的形式,设图像中心为O(x,y),某点距离中心O的距离为半径R,非线性方式改变半径R但不改变点的方向,就构成了图像挤压。也可以自定义加压中心点,计算半径方式相同。 图像像素变换倍率使用 y=sqrt(x)。 图像上点P与图像中心O的距离为R,图像挤压就是P点坐标映射到OP直线上的点R2位置,其中| OR2 |=sqrt(OP)*ratio。 2、实现 void Pinch(Mat& img, Mat& dst, int degree) { if (degree < 1 ) degree = 1 ; if (degree > 32 ) degree = 32 ; if (dst.empty()) dst.create(img.rows, img.cols, img.type()); dst = cv::Scalar::all( 0 ); int chns = img.channels(); int height = img.rows; int width = img.cols; int midX = width / 2 ; int midY = height / 2 ; int i, j, k; int X, Y, offsetX,

仪表控件----------WinForm控件开发系列

折月煮酒 提交于 2020-10-28 10:44:23
/// <summary> /// 仪表控件 /// </summary> [ToolboxItem( true )] [DefaultProperty( " Value " )] [DefaultEvent( " ValueChanged " )] [Description( " 仪表控件 " )] public partial class MeterBarExt : Control { #region 事件 public delegate void ValueEventHandler( object sender, ValueEventArgs e); private event ValueEventHandler valueChanged; /// <summary> /// 值更改事件 /// </summary> [Description( " 值更改事件 " )] public event ValueEventHandler ValueChanged { add { this .valueChanged += value; } remove { this .valueChanged -= value; } } #endregion #region 属性 #region 内圆 private int circleRadius = 40 ; /// <summary> //

Python内置模块之math模块

南笙酒味 提交于 2020-08-11 14:07:45
what's the math 模块   Python math 模块提供了许多对浮点数的数学运算函数。需要注意的是,这些函数一般是对平台 C 库中同名函数的简单封装, 所以一般情况下, 不同平台下计算的结果可能稍微地有所不同, 有时候甚至有很大出入。 主要功能有: 幂数:幂次方、平方根 对数:2、10、e相关的对数操作 圆相关:π、弧度与角度的转换 三角函数:正三角函数、反三角函数 其他常用:小数的整数部分、向上取整、向下取整、两个数的最大公约数、取余数... 幂数 幂与平方根 # pow(x, y):返回x的y次方 print (math.pow(2, 4)) # 2**4 # ldexp(x, i):返回x*(2**i)的值 print (math.ldexp(5, 2)) # 5*(2**2)=20.0 # sqrt(x):求x的平方根 print (math.sqrt(16)) # 4.0 # factorial(x):取x的阶乘的值 print (math.factorial(5)) # 5*4*3*2*1 # 120 # hypot(x, y):得到(x**2+y**2)的平方根 print (math.hypot(3, 4)) # 5 常数e相关 import math # 常数e math.e # 2.718281828459045 # exp(x)

SuperMap-WebGL-坐标系及转换说明

自古美人都是妖i 提交于 2020-05-02 03:26:14
转载自: https://blog.csdn.net/supermapsupport/article/details/89519310 一、坐标系介绍 我们先来列举下Cesium中的坐标系:WGS84经纬度坐标系(没有实际的对象)、WGS84弧度坐标系(Cartographic)、笛卡尔空间直角坐标系(Cartesian3)、平面坐标系(Cartesian2),4D笛卡尔坐标系(Cartesian4) 1、WGS84坐标系 World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统,坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984.O定义的协议地球极(CTP)方向,X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。我们平常手机上的指南针显示的经纬度就是这个坐标系下当前的坐标,进度范围[-180,180],纬度范围[-90,90]。 我们都知道Cesium目前支持两种坐标系WGS84和WebMercator,但是在Cesium中没有实际的对象来描述WGS84坐标,都是以弧度的方式来进行运用的也就是Cartographic类:new Cesium.Cartographic(longitude, latitude, height),这里的参数也叫longitude

Flutter 裁剪类组件 最全总结

拟墨画扇 提交于 2020-03-12 22:12:51
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 ClipRect ClipRect组件使用矩形裁剪子组件,通常情况下,ClipRect作用于 CustomPaint 、 CustomSingleChildLayout 、 CustomMultiChildLayout 、 Align 、 Center 、 OverflowBox 、 SizedOverflowBox 组件,例如ClipRect作用于Align,可以仅显示上半部分,代码如下: ClipRect( child: Align( alignment: Alignment.topCenter, heightFactor: 0.5, child: Container( height: 150, width: 150, child: Image.asset( 'images/1.png', fit: BoxFit.cover, ), ), ), ) 全图效果: 裁剪效果: clipper 参数定义裁剪规则,下面具体介绍。 clipBehavior 参数定义了裁剪的方式,只有子控件超出父控件的范围才有裁剪的说法,各个方式说明如下: none:不裁剪,系统默认值,如果子组件不超出边界,此值没有任何性能消耗。 hardEdge

一行命令自动戴上口罩

拈花ヽ惹草 提交于 2020-02-27 12:14:40
本文同步发表于 Prodesire 公众号 和 Prodesire 博客 。 前言 2019 年底开始蔓延的新型肺炎疫情牵动人心,作为个体,我们力所能及的就是尽量待在家中少出门。 看到一些朋友叫设计同学帮忙给自己的头像戴上口罩,作为技术人,心想一定还有更多人有这样的诉求,不如开发一个简单的程序来实现这个需求,也算是帮助设计姐姐减少工作量。 于是花了些时间,写了一个叫做 face-mask 的命令行工具,能够轻松的给图片中的人像戴上口罩,而且口罩的方向和大小都是适应人脸的哦~ 使用 安装 face-mask 确保 Python 版本在 3.6 及以上 pip install face-mask 使用 face-mask 直接指定图片路径即可为图片中的人像戴上口罩,并会生成一个新的图片(额外有 -with-mask 后缀): face-mask /path/to/face/picture 通过指定 --show 选项,还可以使用默认图片查看器打开新生成的图片: face-mask /path/to/face/picture --show 效果 给一个人戴上口罩 给多个人戴上口罩 给动漫人物戴上口罩 实现 思路 要想实现上面的效果,我们应该怎么做?不妨这么想: 首先是识别出人的鼻子(nose_bridge)和脸轮廓(chin) 通过脸轮廓确定出脸左点(chin_left_point)