JS-设置弹窗时候禁用滚动条

方法一 启用禁用时,设置js document.documentElement.style.overflowY = 'hidden'; 当还原时候,只需要把属性重置scroll就可以了 document.documentElement.style.overflowY = 'scroll'; 方法二 方法一仅仅是滚动条的隐藏和显示。如果想要在显示滚动条条件下,实现这一功能,需要绑定scroll的事件 启用禁用时 var tops = $(document).scrollTop();//当页面滚动时,把当前距离赋值给页面,这样保持页面滚动条不动 $(document).bind("scroll",function (){$(document).scrollTop(tops); }); 当重置时,只需要解绑此事件 $(document).unbind("scroll"); 两种方法可以应对不同的使用情景,隐藏滚动条的方法(方法一)在实际操作时,因为滚动条会占位,所以视觉上会出现屏幕变大缩小的效果,所以还需要对滚动条的占位进行一个设置 隐藏滚动条时: window.innerWidth //浏览器可用宽度 document.body.clientWidth// body的宽度 var m=window.innerWidth-document.body.clientWidth;//滚动条的宽度 document.documentElement.style.marginRight=m+"px"; //或者 document.documentElement.style.paddingRight=m+"px"; //这样就会把滚动条的占位处理好 //显示滚动条: document.documentElement.style.marginRight="0px"; //或者 document.documentElement.style.paddingRight="0px"; //此时还可能存在一个问题,自己的弹出框在打开关闭的时候会有轻微的位移,也是因为滚动条的缘故,所以根据自己的需要,来进行设置修改 //隐藏滚动条打开弹窗时: $('弹窗').css("right",m+"px");//根据自己需要调整属性 //显示滚动条关闭弹窗时: $('弹窗').css("right","0px");//根据自己需要调整属性 //方法二在滚动时,大多数的浏览器都可以适应,但是IE浏览器会出现比较明显的滚动强制重置 效果。 //bootstrup的模态框是一种不错的弹出框,完美解决了滚动条的问题,如果没有特殊要求,可以考虑bootstrup。

数据扩增 data-augmentation的方法及代码

为了扩增数据集,采用了2种方式来进行数据的扩增。 1、使用keras的数据增强处理 2、使用skimage的数据增强处理 keras包括的处理,有featurewise视觉上图像会稍微变暗,samplewise视觉上图像会变成类x光图像形式,zca处理视觉上图像会变成灰白图像,rotation range 随机旋转图像,水平平移,垂直平移,错切变换,图像缩放,图片的整体的颜色变换,水平翻转操作,上下翻转操作, rescale。 存在的问题是图像的变换是随机的,即有的图像可能不会变换。 skimage的数据增强处理,有resize, gray,rescale,noise,flip,rotate, shift, zoom,gaussian zoom,shear,contrast,channelshift,PCA,polar。 目前极坐标变换polar,还有些问题,即转换后只有灰度图,有待解决。 相关的代码见如下地址。供参考。 github地址:https://github.com/renwoxing2016/data-augmentation

感知哈希算法——Python实现

1. 前言 现在手中只有一张图像需要在一个集合中去找到与之最相近的那一张,这个过程实际是一个匹配的过程,特别是在多模态医学图像中解决这样的问题是比较迫切的,今年试验了一种广泛使用的算法——感知哈希算法!具体的实验结果将在下文中给出。 2. 算法原理 step1:缩小图片尺寸 将图片缩小到8×8的尺寸, 总共64个像素. 这一步的作用是去除各种图片尺寸和图片比例的差异, 只保留结构、明暗等基本信息。 step2:转为灰度图片 将缩小后的图片, 转为64级灰度图片。 step3:计算灰度平均值 计算图片中所有像素的灰度平均值 step4:比较像素的灰度 将每个像素的灰度与平均值进行比较, 如果大于或等于平均值记为1, 小于平均值记为0。 step5:计算哈希值 将上一步的比较结果, 组合在一起, 就构成了一个64位的二进制整数, 这就是这张图片的指纹。 step6:对比图片指纹 得到图片的指纹后, 就可以对比不同的图片的指纹, 计算出64位中有多少位是不一样的. 如果不相同的数据位数不超过5, 就说明两张图片很相似, 如果大于10, 说明它们是两张不同的图片。 3. Python实现 # -*- coding=utf-8 -*- import numpy as np from PIL import Image import matplotlib.pyplot as plt # extract feature # lines: src_img path def Extra_Featrue(lines, new_rows=64, new_cols=64): for name in lines: ori_img = Image.open(name.strip()) feature_img = ori_img.

Unity3D 官方文档 平台特殊化之Android

版本:unity 5.6 语言:C# 总起: Android平台,虽然与IOS开发类似,但因为其硬件没有完全的标准化,所以会出现各式各样的问题。这一点在官方文档的第一段就提到了。 Unity Android基本环境的搭建还是比较容易的: 1.Unity本身没有下载Android插件的,首先 File -> Build Settings -> [切换到Android] Open Download Page 下载插件; 2.安装JDK,我使用的是Java8,不知道新出的Java9能不能用:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html; 3.安装SDK,这边我推荐安装Android Studio,再在其中中安装SDK:https://developer.android.com/index.html(进入该网页可能需要科学上网,然后下载SDK具体的包现在直连下载都很快了,不需要去网上找网友提供的包了); 4.安装Android模拟,我这边选择的是Nox英文版; 5.如果需要使用IL2CPP,安装一下NDK,5.6.3需要的版本是r10e,不要下错了。 Unity Remote: Unity远程调试插件,适用于Android、IOS和tvOS,一开始我以为这个可以直接在Unity中调试Android,实则不能,所以这个功能很鸡肋,不过也有他的使用场景,所以还是介绍一下吧。 调试步骤: 1.首先在Google Play中找到Unity Remote 5应用,把它下载安装到Android手机中,如果没有科学上网的同学,可以在百度上找一下; 2.将手机插上USB接口,允许USB调试,手机端就准备完成了,模拟器方面,我测试了3种:Genymotion可以直接运行,而Nox和Bluestacks没有效果; 3.接下来就是Unity中的设置,通过Edit -> Project Settings -> Editor,找到Unity Remote选项,将Device更改成Any Android Device: 4.然后直接运行Unity工程就会看到效果。 所以这个是做什么用的呢?首先大家可以理解为Android手机为一个扩展屏,然后Android手机的触屏输入、加速度、陀螺仪、相机、指南针、GPS和摇杆可以作为Unity工程的输入。 再然后……就没了,就多了个测试输入的功能,如果想要测试真机运行情况还是要打成APK在手机上运行。 这边再说一下两种特殊的情况: 1.如果是多台Android设备连接电脑的情况下,Unity会自动寻找第一台它找到的设备,而不能手动配置; 2.在手机端的显示图像质量很差,可以在Unity Remote的菜单中设置Compression为PNG,Resolution为Normal,图像效果就不会有损失了,但会占用更多的带宽。 出包界面: 在我们打包工程时,就会用到以下的一个界面: ♦ Texture Compression 图片纹理压缩格式,默认为ETC。 ♦ Build System 在构建Android项目时最需要了解的就是这边两种Build System的区别: 1.Internal(Default) 这是一种比较传统的构建方式。可以这么说,开发纯Android项目时,过去主流使用的Eclipse就是使用该种构建,是一种ADT的构建方式。 打包一个APK经由以下几个步骤: a.准备并打包Unity的Assets; b.编译脚本; c.处理Plugins插件; d.如果Split Application Binary被勾选,会拆分资源到APK和OBB中; e.使用AAPT打包Android资源;

Shader屏幕后處理效果

Shader屏幕后處理效果 邊緣檢測: 边缘检测的原理是利用一些边缘检测算子对图像进行卷积操作(卷积操作就是使用一个卷积核对一张图像的每一个像素进行一系列的操作,倦急核通常是一个四方形网格结构,例如2×2,3×3的方形区域,该区域内每个方格都有一个权重值。当对图像中的某个像素进行卷积时,我们会把卷积核的中心放置在该像素上,如下图,翻转之后再依次进行计算核中的每个元素和其覆盖的图像像素值的乘积并求和,得到的结果就是改为只的新像素值) 常见的边缘检测算子 卷积操作的神奇指出 在于选择的卷积核,用于边缘检测的卷积核(边缘检测算子)是什么? 首先想一下 如果相邻像素之间存在差别明显的颜色,亮度等属性,那么他们之间应该有一条边界。这种相邻像素之间的差值可以用梯度来表示,边缘处的梯度绝对值比较大,所以,就出现下面几种边缘检测算子; 下面请看注释: Shader "MyShader/OutLine" { Properties{ _MainTex("MainTexture",2D) = "White"{} _LineColor("OutLineColor",color) = (1,1,1,1) _BackGroundColor("BackGroundColor",color) = (1,1,1,1) _EdgeOnly("EdgeOnly",float)=3 } SubShader{ Tags{"RenderType" = "Transparent"} Pass { Cull off ZTest Always ZWrite off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _MainTex_TexelSize; fixed4 _LineColor; fixed4 _BackGroundColor; float _EdgeOnly; struct a2v { fixed4 vertex : POSITION; fixed2 uv : TEXCOORD; }; struct v2f { fixed4 pos : SV_POSITION; fixed2 uv[9]:TEXCOORD;//对应了使用Sobel算子采样是需要的 //九个领域纹理坐标 }; fixed luminance(fixed4 color) { return color.

Nodejs-8.9.3 安装与使用

nodejs Node 就是 JavaScript 语言在服务器端的运行环境. Node是一个JavaScript的运行环境(平台),不是一门语言,也不是JavaScript的框架 Nodejs安装 安装很简单,在官网下载直接安装即可 官网地址: https://nodejs.org/en/download/ Nodejs解决卡死下载慢的问题 在使用npm install 有使用安装会卡住不动、或者下载慢的问题 解决办法就是使用国内的镜像来访问。 淘宝提供的镜像不错,使用如下方式来下载就会很快 npm install -gd express -registry=http://registry.npm.taobao.org 为了避免每次使用-registry=http://registry.npm.taobao.org 我们可以: npm config set registry http://registry.npm.taobao.org 这样我们在使用命令就可以不用加-registry参数,比如: npm install webpack -g 验证是否设置上镜像: C:\WINDOWS\system32>npm config get registry https://registry.npm.taobao.org/ 配置文件 在用户根目录有一个.npmrc文件,这个文件是配置npm一些参数: prefix=E:\nodejs\node_global //npm install 安装路径 cache=E:\nodejs\node_cache //npm 缓存路径 registry=https://registry.npm.taobao.org //npm 镜像 关于环境变量 如果使用msi安装包进行安装nodejs在安装过程中会配置环境变量 如果我们认为改变了npm install安装路径那么需要在用户环境变量中配置环境变量,才能直接使用我们install 模块的命令 CNPM npm(node package manager)是nodejs的包管理器,用于node插件管理,比如插件的安装、更新、卸载 因为npm安装插件是从国外服务器进行下载,受网络影响很大,可能出现异常,CNPM命令就是为了解决这个问题。这个命令和npm命令用户用法一致。 安装: npm install cnpm -g --registry=https://registry.npm.taobao.org REPL环境 其实就是nodejs提供测试调试环境,类似谷歌浏览器的debug调试工具,我们可以在这个环境中测试我们的代码。

tensorflow离线源码安装

从源码离线编译安装tensorflow,记录踩过的坑: 1.tensorflow的外部依赖 tensorflow的外部依赖很多,所依赖的外部库均在WORKSPACE文件和//tensorflow/workspace.bzl文件中给出了url地址 使用如下命令可以拉取全部的external外部依赖 bazel fetch //... 为能够离线安装tensorflow,需要建立内部局域网的http服务。(建立http服务可以使用wampserver,可参考 http://blog.csdn.net/huang_yx005/article/details/50914735) 在外部联网机器中使用脚本下载全部的外部依赖,并拷贝到内部局域网的http服务的根目录下。 将WORKSPACE文件和//tensorflow/workspace.bzl文件中的外部依赖的url地址的前缀全部换成内部局域网的http服务的地址。 至此,编译安装需要外部依赖时会从内部http下载相应的库 2.换行符问题 从github上clone下来的文件的可能采用dos换行符,也可能采用unix换行符 如果某个可执行文件采用了dos换行符,此时在liunx下运行就会出错 解决方法: 使用vim打开,输入vim命令 :set ff=unix 上述命令将文件中所有的dos换行符’\r\n’转换成unix换行符‘\n’ 3.运行如下的命令时产生错误 bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg error in tensorflow setup: ‘install_requires’ must be a string or list of string containing valid project/version requirement specifiers; Expected ‘,’ or end-of-list in backposts.weakref >= 1.0rc1; 解决办法: python版本高于3.4,python安装backposts.weakref.10rc1 4.源码编译的大致流程: export TEST_TMPDIR=… export LD_LIBRARY_PATH=… 需包含cuda, cudnn相关的路径 ./configure 对tensorflow进行配置 bazel build ––config=opt —config=cuda //tensorflow/tools/pip_package:build_pip_package 编译目标程序,开启GPU If you would like to prevent new dependencies from being added during builds, you can specify the --fetch=false flag

openCV学习笔记(七):傅里叶变换

之前熟悉了openCV怎么调整图片对比度和亮度(通过线性和非线性的方法),都是很基础的图形操作,这边开始介绍openCV图像处理很重要的工具方法:傅里叶变换。 这部分内容涉及到复杂的傅里叶公式、也涉及到很多数学上的原理,单单通过官网是根本不会理解这部分内容的,我也是翻阅了很多的资料才对这部分内容有了比较清晰的了解,这边我通过用openCV的傅里叶变换方法实现图片校正的功能,里面涉及到的方法和原理我尽量详细的介绍。 上一篇内容:http://blog.csdn.net/jbl20078/article/details/78854660 openCV 傅里叶变换实际应用:图像旋转校正 第一部分:什么是傅里叶变换 光是学习傅里叶变换就花了我多半天的时间,后悔大学没好好学呀,这部分内容如果想深入了解的话看这个神人写的吧,已经非常用心并且很耐看: http://blog.jobbole.com/70549/ 如果对傅里叶变换还模糊或者看不下去的话也没关系,我们了解它在图形处理方面的意义和能处理什么问题就可以了。 第二部分:傅里叶变换在图形处理方面的实际意义和应用 如果第一部分详读了之后,应该会清楚傅里叶变换后其实是描述频率的二维数据,有了可以描述图像的频率(或者波频)我们能分辨出图像的高频部分和低频部分,高频部分就是图像对比度很大的区域(高频点趋近白色),低频部分是图像对比度比较小的部分(低频趋近于暗色),图像的边缘通常就是高频,因为这个区域色差普遍很大,所以傅里叶变换后的图像数据会比较方便的处理边缘(为我们边缘检测和图片方向检测提供了可能),如果你了解图像噪音的话(由于图像的传输等原因,图像中会有噪点)傅里叶通过对频率值的分析可以去除图像噪音,达到增强图像的效果。 当然,傅里叶应用的地方还有很多,比如图像特征值提取等,正是由于它的用途这么大,我们才一定要花大力气搞懂它的使用方法和原理,对我们后面图形的处理会有极大的帮助。 下面是傅里叶变换得到的波谱图(或者叫频率图,幅度图,无所谓,我们知道它是描述图形变化频率的数据就ok了)。 后面我会介绍怎么通过傅里叶变换后的波频图来给上面的图片扶正。 第三部分:实现图片的傅里叶变换 傅里叶变换需要经历很多步骤,我们分解一步步来实现: 1、读取原始图形数据,并将图像转化成灰度图(因为彩色图很多数据对我们没用,灰度值就够了,而且计算量小) Mat mat = [[CVUtil sharedHelper]cvMatFromUIImage:_buildImg.image]; Mat grayImg; cvtColor(mat, grayImg, COLOR_BGR2GRAY); 我读取图形的方式跟官网不同,因为我是在IOS系统上模拟测试的,这个根据自己测试的平台来修改 2、扩充灰度图的尺寸并且填充像素(图形尺寸是2,3,5倍数的时候傅里叶变换计算速度最快),这些接口openCV都提供了 Mat padded; int m = getOptimalDFTSize(grayImg.rows); int n = getOptimalDFTSize(grayImg.cols); //通过copyMakeBorder进行填充像素和颜色(多出的像素点全部用0填充) copyMakeBorder(grayImg, padded, 0, m-grayImg.rows, 0, n-grayImg.cols, BORDER_CONSTANT, Scalar::all(0)); 这部分涉及到的接口都很简单,看参数都能明白是做什么,如果不清楚,调到代码中看方法描述,或者去下载源码阅读。 3、扩充图形的通道,准备调用离散傅里叶变换方法 看了第一部分内容或者了解傅里叶变换公式的同学知道,傅里叶变换得到的结果是一个复数,实数和虚数部分为了都能保存到我们傅里叶变换后的结果,我们要给上面的灰度图 扩充一个值全部为0的通道,并且把数值转化成float类型。最后得到的傅里叶变换结果我们会将实数部分和虚数部分拿出来计算幅度值(就是我们想要得到的频率图)做后面的校正 图形,下面会说。 //傅里叶变化后的结果是一个复数,也就是转化到频域中会有两个图像值,我们将图像转化成float类型 并且添加一个额外通道来存储复数部分 Mat planes[] = {Mat_(padded),Mat::zeros(padded.size(), CV_32F)}; //复制了一个padded,然后添加了一个全是0的通道 Mat complex; //进行通道的混合 //merge函数是合并多个array 成为一个多通道的array,比方说array1 array2 合并成array3 那么array3[1][0] = array1[1] //array3[1][2] = array2[1] 它的逆向操作是split方法 merge(planes,2,complex); //合并好了 相当于给傅里叶变换的结果预先分配了存储空间(因为结果是复数)所以下面就可以进行傅里叶变换了 //dft函数(离散傅里叶变换) //输入输出支持同一个图像 dft(complex,complex); 4、计算幅度图,得到频域图谱 傅里叶计算结束,我们得到了一个双通道的Mat数据,第一个通道是傅里叶变换数据的实数,第二个通道是傅里叶变换数据的虚数,这两者具体几何意义是什么,第一部分的连接 文章都有讲,不清楚的小伙伴可以回头看下,或者我们清楚下面的概念: 我们一般用幅度图像来标识图像傅里叶的变换结果,幅度的计算公式: Re(DFT)是实数,IM(DFT)是虚数

centos7 离线配置安装nginx

下载nginx包 tar -zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7 安装 ./configure make clean ####清除./configure时产生的临时文件 可能会报错误 ### the HTTP rewrite module requires the PCRE library. ###显示需要pcre rpm -ivh pcre pcre-devle zlib zlib-devle ./configure 执行完成会看到 ### Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library nginx path prefix: “/usr/local/nginx” nginx binary file: “/usr/local/nginx/sbin/nginx” nginx modules path: “/usr/local/nginx/modules” nginx configuration prefix: “/usr/local/nginx/conf” nginx configuration file: “/usr/local/nginx/conf/nginx.conf”