上面是我遇到问题,开始找的问题以为真的是点9图的问题,结果发现我项目下根本就没这个图片,百度搜索好多,搜到了一些有用的信息,可能是文件路径太长;于是我就从这下手,找到了jenkins build项目的缓存目录,结果发现路径还真他么长,果断觉得就是这个问题。于是就从stackoverflow搜了以便还真找到了,解决方法:
在gradle.properties中加个配置:android.buildCacheDir=D:/android-build-cache当然后面的路径自己新建就行;
后面附上解决问题的连接
http://stackoverflow.com/questions/42580645/errorsome-file-crunching-failed-see-logs-for-details-afer-update-gradle/42605597#42605597stackoverflowstackoverflowstackoverflowhttp://stackoverflow.com/questions/42580645/errorsome-file-crunching-failed-see-logs-for-details-afer-update-gradle/42605597#42605597stackoverflowstackoverflowstackoverflowhttp://stackoverflow.com/questions/42580645/errorsome-file-crunching-failed-see-logs-for-details-afer-update-gradle/42605597#42605597
更多技术文章请访问我的个人博客http://www.rain1024.com
好玩的API调用之—天气预报的API调用与爬虫 平时写程序经常需要用到一些服务,像翻译,天气预报,星座什么的,我一般都是用Python写个爬虫去提供这些服务的网站爬数据,但是有些网站对爬虫有很多限制,一些关键字会定时更改,就像中国天气网经常变更HTML标签的class值,这就需要时常维护爬虫,而聚合数据API只对普通用户提供一个免费API接口,简直垃圾,而网上的一些网站其实有开放的API供开发者调用,所以我想着把自己发现的好玩的API和自己写的爬虫写个博客专题供大家参考,我会继续补充和维护。 第四个专题是关于天气预报的API调用与爬虫,聚合数据里的天气预报接口还收费,真是lj,我一开始用爬虫爬中国天气网里的数据进行分析,后来发现了和风天气这个良心网站,不仅提供免费的接口,而且天气预报数据也很多很丰富。今天就写中国天气网的爬虫和和风天气的api调用。 1.中国天气网的网址http://www.weather.com.cn/,先在里面找到自己的城市,然后把网址复制下来,就像我的是呼和浩特市http://www.weather.com.cn/weather1d/101080101.shtml,就是下图这样的。 下面是我爬虫的代码,就不做详细解释。 #-*- coding=utf8 -*- import sys reload(sys) sys.setdefaultencoding( "utf-8" ) import urllib2 from bs4 import BeautifulSoup import time def download(url,headers): try: request = urllib2.Request(url,headers=headers) html = urllib2.urlopen(request).read() # html = urllib2.urlopen(url).read() except urllib2.URLError as e: print "error" print e.code #可以打印出来错误代号如404。 print e.reason #可以捕获异常 html = None return html def save(html): f = open('thefile.txt', 'w') f.write(html) f.close() def read_file(): f = open('thefile.txt', 'r') html = f.
一、不可小瞧的镜头 镜头是摄像机的眼睛,为了适应不同的监控环境和要求,需要配置不同规格的镜头。比如在室内的重点监视,要进行清晰且大视场角度的图像捕捉,得配置广角镜头;在室外的停车场,既要看到停车场全貌,又要能看到汽车的细部,这时候需要广角和变焦镜头,在边境线、海防线的监控,需要超远图像拍摄。
1、镜头的主要参数
焦距(f):焦距是镜头和感光元件之间的距离,通过改变镜头的焦距,可以改变镜头的放大倍数,改变拍摄图像的大小。当物体与镜头的距离很远的时候,我们可用下面公式表达:镜头的放大倍数≈焦距/物距。增加镜头的焦距,放大倍数增大了,可以将远景拉近,画面的范围小了,远景的细节看得更清楚了;如果减少镜头的焦距,放大倍数减少了,画面的范围扩大了,能看到更大的场景。
镜头的主要参数
视场角:在工程实际中,我们常用水平视场角来反映画面的拍摄范围。焦距f越大,视场角越小,在感光元件上形成的画面范围越小;反之,焦距f越小,视场角越大,在感光元件上形成的画面范围越大。
光圈:光圈安装在镜头的后部,光圈开得越大,通过镜头的光量就越大,图像的清晰度越高;光圈开得越小,通过镜头的光量就越小,图像的清晰度越低。通常用F(光通量)来表示。F=焦距(f)/通光孔径。在摄像机的技术指标中,我们可以常常看到6mm/F1.4这样的参数,它表示镜头的焦距为6mm,光通量为1.4,这时我们可以很容易地计算出通光孔径为4.29mm。在焦距f相同的情况下,F值越小,光圈越大,到达CCD芯片的光通量就越大,镜头越好。
2、镜头的分类
按视角的大小分类
按光圈分类
2 二、提高图像清晰的根本在于提高摄像机的感光能力
1、感光元件的作用
目前,主流监控摄像机的感光元件采用CCD元件,实际上就是光电转换元件。和以前的CMOS感光元件相比,CCD的感光度是CMOS的3到10倍,因此CCD芯片可以接受到更多的光信号,转换为电信号后,经视频处理电路滤波、放大形成视频信号输出。接受到的光信号越强,视频信号的幅值就越大。视频信号连接到监视器或电视机的视频输入端便可以看到视频图像。提高图像清晰的根本就在于提高摄像机的感光能力。
2、镜头与CCD感光元件的配置
在图一中我们可以看到,CCD传感器上形成的图像比原始图像小,CCD芯片成像面的尺寸规格不同,形成的图像大小也不同。
CCD的成像尺寸常用的有1/2英寸、1/3英寸,CCD的尺寸规格决定了摄像机的规格。
镜头与CCD感光元件的配置
CCD的成像尺寸,也就是摄像机画面宽度和高度的比例与电视机画面宽度和高度比例一样,通常为4:3。这样保证了摄像机的视频图像在显示器上的图像不变形。
镜头的规格也分为1/2英寸、1/3英寸等,1/2英寸的镜头可用于1/2英寸、1/3英寸的摄像机;而1/3英寸的镜头只能用于1/3英寸的摄像机,不能用于1/2英寸的摄像机,这是因为1/3英寸镜头光通量只有1/2英寸镜头光通量的44%,不能满足1/2英寸的摄像机的光通量要求。
镜头焦距的配置我们还是以图一来说明。确定合适的焦距,是决定图像质量重要因素。f=vD/Vf=hD/H。其中,f代表焦距,v代表CCD成像尺寸的高度,V代表被观测物体高度,h代表CCD成像尺寸的宽度,H代表被观测物体宽度,D代表物体到镜头的距离。假设用1/3”CCD摄像头观测,被测物体宽500毫米,高400毫米,镜头焦点距物体5000毫米。由公式可以算出:焦距f=4.8×5000/500≈48毫米或焦距f=3.6×5000/400≈45毫米。
3 三、如何在光照条件很差的环境中拍摄到清晰的图像
监控摄像机要求能在夜晚光照条件很差甚至是没有光的环境中,也能拍摄到清晰图像。在摄像机的指标中,我们常常可以看到低照度这一项。
1、照度的概念
照度是测量摄像机感光度的单位,用勒克司(Lux)表示,也就是摄像机能在多暗的光照条件下拍摄到图像。勒克司(Lux)的值越低,表明摄像机能在光照条件更低的情况下拍摄到清晰的图像。我们知道摄像机产生的视频信号标称值为1v,标准值为700mv,比如采用光圈为F1.2的镜头,当被拍摄景物的照度值为0.02Lux时,摄像机输出的视频信号幅值为标准幅值700mv的33%-50%,这时摄像机的最低照度为0.02Lux/F1.2。测试最低照度值必须注意镜头光圈大小,F值越小,光圈越大,需要的照度越低。不同的光圈,最低照度值是不同的。
2、实现低照度摄象的方案
我们知道CCD摄像机可以分为彩色与黑白摄像机,普通摄像机的最低照度见下表。
普通摄像机的最低照度
可见光的波长范围为380nm~780nm,可见光波长由长到短分为红、橙、黄、绿、青、兰、紫,波长比紫光短的称为紫外光,波长比红外光长的称为红外光。CCD传感器表面有一层吸收紫外的透明电极,所以CCD不能接受紫外光。普通彩色摄像机的CCD芯片上有红、绿、蓝三色滤光条,所以彩色摄像机不能感受红外光。而普通CCD黑白摄像机的光谱范围很宽,不仅能感受可见光,而且可以感受红外光。
根据以上原理,在光照条件很差的环境中,工程师们常常采用以下方案拍摄到清晰的图像。
(1)、普通低照度CCD黑白摄像机+红外灯
在监控现场安装红外灯辐射“照明”,产生人眼看不见而普通摄像机能捕捉到的红外光,通过CCD黑白摄像机可以实现夜间拍摄。
(2)、彩色转黑白摄像机+红外灯
所谓彩色转黑白摄像机就是指白天是彩色摄像机,到了晚上光照条件很差的时候,利用黑白图像对红外线感度较高的特点,自动切换为黑白方式,在红外线的配合下进行拍摄。和红外灯配合时候,低照度摄像机必须满足红外灯支持的最低照度。
(3)、红外低照度彩色摄像机
红外低照度彩色摄像机的红外感度比一般摄像机高4倍以上,可以在零照度(0Lux)下工作。
红外低照度彩色摄像机
(4)低速快门摄像机
低速快门摄像机又称画面累积型摄像机,通过电脑连续存储多帧(最多达128帧)因光线不足而较模糊的画面,并累积起来,成为清晰的画面,借助SLOWSHUTTER技术,实现在0.008LUX/F1.2照度下进行拍摄。这种低照度摄像机适用于禁止红、紫外线破坏的博物馆、夜间生物活动观察、夜间军事海岸线监视等。
(5)、超低照度摄像机
超低照度摄像机采用EXVIEWHAD技术大大提高了感光度,其彩色照度可达0.05LUX,黑白则可达0.003-0.001LUX。当配用专用的红外设备,可以得到高清晰度的黑白图像,实现0Lux下拍摄。
4 四、摄像机的控制
为了扩大监控范围,要求监控摄像机能实现旋转、变焦、变放大倍数,自动聚焦等。这些功能的实现,需要数字硬盘录象机通过控制器对摄像机进行控制。
1、旋转控制
工程师们利用云台来安装和固定摄像机,云台分为固定云台和电动云台。固定云台适用于监视范围不大的情况,在固定云台上安装好摄像机后,调整摄像机的水平和俯仰角度,达到最好的工作状态后锁定调整机构就可以了。电动云台安装了步进电机,电机接受来自控制器的信号,带动摄像机旋转实现精确定位,适用于大范围监控。
云台根据其回转的特点可分为只能左右旋转的水平旋转云台和既能左右旋转又能上下旋转的全方位云台。一般来说,水平旋转角度为0°~350°,垂直旋转角度为+90°。恒速云台的水平旋转速度一般在3°~10°/s,垂直速度为4°/s左右。变速云台的水平旋转速度一般在0°~32°/s,垂直旋转速度在0°~16°/s左右。在一些高速摄像系统中,云台的水平旋转速度高达480°/s以上,垂直旋转速度在120°/s以上。
2、实现电动变焦、变倍、自动聚焦
(1)所谓一体化摄像机就是使镜头、CCD芯片、视频处理电路、电源、机壳整合为一个整体,可以实现电动变焦、变倍、自动聚焦功能。能否快速、准确的实现自动聚焦是评价一体化摄像机品质的关键。好的产品可以一次性准确聚焦,而品质不好的产品,在聚焦时会来回往复,需要多次才能定焦。目前的一体化摄像机以16、18、20、22、27、32倍变倍为主流,发展趋势是照度越来越低,光学倍数越来越高。注意这里的变焦倍数是指光学变倍。
一体化摄像机的关键技术是镜头、CCD和DSP处理模块。高档镜头主要被日本厂商所掌握,如Canon、Camputar、Avenir等。CCD芯片以日本Sony为主,SonyCCD分为SuperHAD和Exview两种类型,其中Exview是最新技术,普遍采用1/4寸尺寸,性噪比高于SuperHAD;在DSP处理芯片上,Sony的DSP芯片可以很好的处理图像色彩,使图像看上去十分鲜艳。而Canon、Nikon的DSP在捕光模式和对焦上比较好。
(2)采用电动变焦镜头+普通摄像机
把电动变焦镜头和普通摄像机结合起来,利用普通摄像机视频驱动的原理,实现镜头焦距、光圈、聚焦的自动控制。目前有些厂家开发出了超高倍率的60倍电动变焦镜头”D60×12.5″。其750mm(使用变焦扩展镜时可达1500mm)的焦距可以鲜明地识别3公里远处的人物。
5 五、视频图像的网络传输
1、模拟摄像机+数字硬盘录像机+计算机网络系统
这是目前应用最广泛的网络视频监控系统,通过设定端口、网关和路由,现场的数字硬盘录像机作为服务器,在远程客户的计算机上安装专用监控软件或插件,用户便可以通过互联网看到数千里之外的现场,实现单路、多路视频远程监控和录像。
2、模拟摄像机+网络视频服务器+计算机网络系统
模拟摄像机输出的信号是模拟信号,计算机处理的信号是数字信号,在网络中传输的也是数字信号,网络视频服务器(VideoServer)把模拟摄像机的模拟信号转换成数字信号,再经过高效压缩芯片压缩、编码,输出可以在计算机网络中传输的数字信号,实现在计算机网络中以数字信号的形式传输。因此,也可以把网络视频服务器称为视频编码器(VideoCoder)。当视频服务器的一端连接着模拟摄像机的输出信号,另一端插上计算机网线,然后在互联网中的任一台计算机中设置好网关、路由,打开IE浏览器,输入IP地址或者域名就可以在电脑中看到监控的画面了。如果模拟摄像机配置有云台,我们还可以通过电脑对摄像机进行变焦、变倍、旋转等控制操作。在网络视频服务器中还得嵌入实时操作系统,可以是Linux版本,也可以是Windows版本,从稳定性上讲,Linux版本更胜一筹。采用网络视频服务器可以选择和配备不同的摄像机,具有更多的灵活性。
3、网络摄像机+计算机网络系统
网络摄像机就是将模拟摄像机与网络视频服务器整合在一起。在摄像机里面内置模/数转换、视频服务器功能,和网络视频服务器一样,按照网络协议实现网络通讯和数据传输,还可以接收报警信号及向外发送报警信号。这更方便了,只要把网络摄像机安装好,插上网线就可以浏览了。
4、CDMA无线网络视频监控系统
上面介绍的传输是有线传输,但是在移动的交通工具(汽车)、偏远的矿山、山区,采用有线传输显然是很困难的,我们可以利用成熟的无线通讯技术。这里的代表产品有中国联通的移视通。移视通CDMA无线网络视频监控系统是把CDMA数据通讯功能和数字视频编码功能整合成一体的便捷式产品。它把摄像机图像经过视频压缩编码模块压缩,通过智能无线通讯终端发射到CDMA网络,实现视频数据的交互、发送/接收、加解密、编解码,链路的控制维护等功能。该系统可以把实时动态图像传到距离用户最近的联通通信网络。可以通过Internet从系统中控端得到实时图像信息。系统整合了CDMA网络和Internet网络的优势,随时随地的进行远程监控管理。
6 六、常用技术指标解释
1、分辨率
图像分辨率简单说就是指屏幕水平和方向垂直方向所显示的点数。比如1024×728,其中“1024”表示屏幕上水平方向显示的点数,“768”表示垂直方向显示的点数。分辨率越高,图像就越清晰。分辨率越高图像的显示越清晰。
2、清晰度
摄像机的清晰度用线表示,分为水平线和垂直线,在实际的工程应用中我们常常以水平线作为摄像机清晰度的评估指标,线数越多,则清晰度越高。常用的黑白摄像机的清晰度一般为450-600,而彩色摄像机的清晰度一般为330-480,其数值越大成像越清晰。一般的监视场合,用450线左右的摄像机就可以满足要求,对于医疗、图像处理等特殊场合,用600线的摄像机能得到更清晰的图像。
手上有一部HTC D820t型号的手机,并且已经开启了开发者选项(这是废话,不然也看不到USB调试),然而USB调试就是灰色的。怎么调怎么选择连接选项都不行,重置手机也不行,后来在网上搜到说需要插入手机SIM才行。
没有插入SIM卡,手机不让使用 连接方式不对,选为“文件传输”
《社交网络》里的Mark Zackburg被女朋友甩后,在舍友的启发下,充分发挥了技术宅男自娱自乐的恶搞天分,做出了Facemash网站,对学校女生的相貌进行排名打分,结果网站访问流量过大,直接把学校网络搞瘫痪了。Facemask大受欢迎的关键就在于Zackburg基友Eduardo写在窗户上的排名公式,看电影之时就对这个排名公式非常感兴趣,上网了解下,才发现这条公式就是大名鼎鼎的ELO等级分制度。ELO的应用非常广泛,大部分棋类比赛,现在流行的MODB游戏,像11平台的DOTA天梯系统,都是采用ELO等级分。
ELO等级分制度是由匈牙利裔美国物理学家Elo创建的一个衡量各类对弈活动选手水平的评分方法,是当今对弈水平评估的公认的权威方法。被广泛应用于国际象棋、围棋、足球等运动,以及很多网游与电子竞技产业。游戏界比较著名的应用有: WOW(魔兽世界)、DOTA、LOL。
ELO计算方法 Ra:A玩家当前的积分 Rb:B玩家当前的积分 Sa:实际胜负值,胜=1,平=0.5,负=0 Ea:预期A选手的胜负值,Ea=1/(1+10^[(Rb-Ra)/400]) Eb:预期B选手的胜负值,Eb=1/(1+10^[(Ra-Rb)/400]) 因为E值也为预估,则Ea+ Eb=1 R’a=Ra+K(Sa-Ea) R’a:A玩家进行了一场比赛之后的积分 其中 K 值是一个常量系数,按照国际象棋里的标准, K 值对于大师选手为16,对于一般选手是32。K值的大小直接关系到一局游戏结束,根据胜负关系计算出的积分变化值。
关于K值 K值是一个极限值,代表理论上最多可以赢一个玩家的得分和失分,K/2就是相同rating的玩家其中一方胜利后所得的分数。国际象棋大师赛中,K=16;在大部分的游戏规则中,K=32。通常水平越高的比赛中其K值越小,这样做是为了避免少数的几场比赛就能改变高端顶尖玩家的排名。
关于分母400 公式Ea和Eb中分母的400是怎么来的呢?为何是400,不是200、100或者是其他? 根据公式可以得出,当K值相同的情况下,越高的分母,越低的积分变化。总体来说400是一个平衡的、万金油的值、让多数玩家积分保持 标准正态分布 的值。具体可以参考:http://en.chessbase.com/post/arpad-elo-and-the-elo-rating-system
实例说明 若当前A玩家积分为1500,B玩家积分为1600 预估A玩家的胜负值: Ea = 1/(1+10^[(1600-1500)/400])≈0.36 预估B玩家的胜负值: Eb = 1-Ea = 1-0.36 = 0.64 假设A玩家获胜,实际胜负值为Sa = 1 A玩家最终得分为 :R’a = 1500 + 32*(1-0.36) = 1500+20.5 = 1520 A玩家赢20分,B玩家输20分。 假设B玩家获胜,实际胜负值为Sa = 1 B队最终得分为 R’b = 1600 + 32*(1-0.64) = 1600 + 11.52 = 1612,B玩家赢12分,A玩家输12分。
Ransomware【勒索软件】已经存在了几年,但它已经成为每个人的脖子上的一个信天翁。目标是针对全球的企业,医院,金融机构和个人,勒索金额高达数百万美元。通过发展成熟的银行木马和恶意软件来盗取个人和组织的钱财。
今天,Ransomware是网络犯罪分子轻松获得报酬的最简单的方法之一。
ransomware作为服务(RaaS)的到来之后,这种威胁变得更加糟糕 – 这种ransomware的设计变得非常用户友好,对技术知识了解少或者没有任何技术知识的人都可以轻松的使用该软件来获取利益。
现在,安全研究人员发现了一种易于使用的ransomware服务,只需一次成功的感染即可获得利润。
被称为Karmen的RaaS变种基于被遗弃的开放源代码ransomware构建工具包,为“隐藏撕裂”(Hidden Tear),在暗网以售价175美元进行售卖。
像任何典型的ransomware感染一样,Karmen使用强大的AES-256加密协议对受感染的PC上的文件进行加密,使得受害者无法访问,除非他/她支付大量钱才有可能从攻击者那里获取解密密钥。
ransomware-as-a-service(RaaS)的这种新型式为买家提供了一个用户友好的图形化仪表板,可让买家访问位于暗网上的基于Web的控制面板,从而允许买方配置Karmen ransomware的个性化版本。
该仪表板让买家保持实时感染数量和利润的运行状态,让那些技术小白也可以部署Karmen,威胁情报公司Recorded Future在今天发布的一篇博文中说到。
黑客:不要混淆我的恶意软件; 否则,您的文件已经没了! 一旦被感染,Karmen ransomware会加密受害者的文件,并显示一个弹出式窗口,并显示威胁信息,警告用户不要干扰恶意软件; 否则,他们可能会丢失所有的文件。
更有意思 如果在受害者的计算机上检测到沙箱环境或分析软件,Karmen会自动删除其解密程序,以使安全研究人员不要调查威胁。
德国和美国的受害者于2016年12月份报告了最初的卡门感染,但在暗网论坛上进行销售是2017年3月份才开始。
到目前为止,有20个用户购买了从DevBitox卡门恶意软件的拷贝,根据评价记录来看,其中三个买家的都是好评。
您还可以观看YouTube视频演示,其中显示了RaaS的行动。
如何保护自己免受Ransomware威胁? 以下是应该考虑的一些重要步骤,以防止ransomware感染:
始终保持对重要数据的定期备份。
确保在系统上运行一个主动的防病毒安全套件工具。
不要打开来自未知来源的电子邮件附件。
最重要的是,请始终安全浏览互联网。
小编特意问了下我们悬镜安全实验室的研究人员,针对勒索软件提示的:不要轻易动电脑,否则将删除你电脑中的任意文件,这个警告是否真实。
答案是:攻击者一旦使用勒索软件攻击您的电脑,也就意味着远程控制住您的电脑了,所以攻击者是可以删除您电脑的任意文件的。
可见这就是为什么:想要获取电脑的权限,攻击者让你做什么,你必须做什么?
来源:thehackernews,由xmirror编译,如需转载请标注:http://www.x-mirror.cn/
最近做的这个项目因为标题栏的颜色是一种很浅的颜色,我在开发时也没有关注标题栏字体的颜色.然后昨天UI拿 着手机突然过来找我,说我手机上的标题栏的字体怎么这么浅,我拿过来看了看,原来是她手机标题栏字体的颜色是 白色的,所以基本上看不清,我拿我自己的手机看了看,发现我手机的标题栏字体颜色却是黑色的(我手机是魅族5, 她的是vivo x9),所以我当时就怀疑是不是系统的原因.然后就上网搜了下发现:Android4.4以上系统版本可以修改 状态栏颜色,但是只有小米的MIUI、魅族的Flyme和Android6.0以上系统可以把状态栏文字和图标换成深色,其他 的系统状态栏文字都是白色的,换成浅色背景的话就看不到了.而且魅族设置状态栏图标为深色和魅族特定的文 字风格,Flyme4.0以上;小米的MIUI设置状态栏字体图标为深色,需要MIUIV6以上,最后就找到了下面这篇博客: http://www.jianshu.com/p/7f5a9969be53 他写了一个工具类,下面我就贴出来:
class StatusBarUtil { /** * 修改状态栏为全透明 * @param activity */ @TargetApi(19) public static void transparencyBar(Activity activity){ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window =activity.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } } /** * 修改状态栏颜色,支持4.4以上版本 * @param activity * @param colorId */ public static void setStatusBarColor(Activity activity,int colorId) { if (Build.
rea 文件下values 里面 colors.xml
setTheme方式
<resources> <color name="colorPrimary">#3F51B5color> <color name="colorPrimaryDark">#303F9Fcolor> <color name="colorAccent">#FF4081color> <color name="nightColorPrimary">#3b3b3bcolor> <color name="nightColorPrimaryDark">#383838color> <color name="nightColorAccent">#a72b55color> resources> styles.xml
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimaryitem> <item name="colorPrimaryDark">@color/colorPrimaryDarkitem> <item name="colorAccent">@color/colorAccentitem> <item name="android:textColor">@android:color/blackitem> <item name="mainBackground">@android:color/whiteitem> style> <style name="NightAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/nightColorPrimaryitem> <item name="colorPrimaryDark">@color/nightColorPrimaryDarkitem> <item name="colorAccent">@color/nightColorAccentitem> <item name="android:textColor">@android:color/whiteitem> <item name="mainBackground">@color/nightColorPrimaryDarkitem> style> resources> values里建一个attrs.xml
<resources> <attr name="mainBackground" format="color|reference">attr> resources> 布局 代码
public class MainActivity extends AppCompatActivity {
//默认的日间模式
private int theme = R.
在我们建立三维模型的过程中,当用多边形网格或者是三角面片来近似的表示曲面的表面时,曲面被离散成许多的平面多边形,如果我们的网格较大,离散度较粗,在模型表面使用明暗处理后,两两相邻的多边形会出现凸起或者是凹陷的折痕,在连接处显得比周围处亮或者暗,这就是所谓的马赫夫效应,如下图所示
针对于出现的马赫夫效应,我们需要进行明暗处理,消除或者是减少三维模型的马赫夫效应,使其看上去更加的光滑美观,常用的明暗处理技术有双线性光强插值—Gouraud明暗处理技术和双线性法向插值-Phong明暗处理技术。以下展示经过明暗处理前后结果对比
OpenGL提供了两种着色模式void glShadeModel ( GLenum mode),恒定着色GL_FLAT,光滑着色GL_SMOOTH,而GL_SMOOTH中则是使用了Gouraud明暗处理技术,对于Phong明暗处理技术可以参见http://blog.csdn.net/dalewzm/article/details/46291397
http://blog.csdn.net/silangquan/article/details/10011169
Gouraud明暗处理算法在处理亮度的不连续性方面很有效,但是在明暗强度函数的斜率急剧变化处仍然可以看到马赫夫效应,不能完全消除光强度的不连续性。而Phong明暗处理是对表面的法向量而不是亮度进行插值,大大改善了Gouraud模型对高亮度镜面反射光的处理,在每一点都是用法向量的一个近似值,所以一般法向量插值的结果要优于亮度插值,在很大程度上消除了马赫夫效应,但是会大大增加明暗处理的时间。
鉴于此,我在用MC算法建立三维模型的时候,由于我的网格设置较大,导致出现了马赫夫效应,即模型表面的可视化效果不光滑,如下:
于是使用OpenGL自带的Gouraud明暗处理技术,以一个MC算法生成的章鱼模型为例子,效果如下
相比未使用明暗处理的模型,使用了Gouraud处理的模型从可视化的角度上来看更加的光滑,效果更好。
编程基础类 程序语言
在线字数统计 11款很酷的新编程工具 AI Pair Programmer Github | 程序员七大生产力工具 coderunner 在线代码运行,支持php,c,c++,go,python,java,groovy tool.chinaz 编码转换 tool.chinaz-时间戳转换 时间戳转换 timebie 世界时间转换 查看网页源代码 查看网页源代码 convertworld 单位换算 ASCII ART生成 ASCII对照表 Dash API文档浏览器和代码片段管理器。Mac专享 Java类 Grepcode 通过projects、classes等各种关键字在线查看它对应的源码,还可以下载老的jar包 大前端 psd2html Simbla 依据模板创建网站带数据库 免费下载单页面网站主题 Mozilla Developer Network 为Web前端人员提供详细的文献和学习资源 – 网络类 HTTP状态码 HTTP Content-type TCP/UDP常见端口参考 HTML转义字符 fiddler 老牌抓包神器 whistle Web 调试代理工具,提供HTTP代理服务;抓包、重放或构造 HTTP、HTTPS、WebSocket 及普通的 Socket(TCP) 请求;通过类似hosts 的简单配置方式操作请求或响应,且支持域名、路径、正则表达式、通配符、通配路径等多种匹配模式;内置移动调试功能。 技术新闻类 码农周刊 码农网 TechCrunch中文网 InfoQ 程序喵 CNET科技行者 技术沙龙 活动行 藏书馆 tumblr hermit 刷题类 codewars leetcode 刷题 国外神器 挑战最强大脑–10个烧脑编程挑战网站 lintcode 正则类 tool.