would8老xp系统怎么调亮度度

这次我主要说说颜色空间,包括三个方面:RGB颜色空间,HSV颜色空间以及颜色空间的转换

1:RGB颜色空间简介


         三基色原理:大多数的颜色可以通过红、绿、蓝<数学中基的概念>三色按照不同的比例合成产生,同样绝大多数单色光也可以分解成红绿蓝三种色光

         当两种光按照适当比例混合得到白光时,称这两种光为互补光。所以上述的混色规律我们可以得到青色、黄色、品红分别是红色、蓝色、绿色的补色。


         单色光的亮度强度各不相同,根据人的感受是:绿光最高,红光次之,蓝光最弱,假设得到的白光的强度为100%。如果用Y表示景物的亮度,则通常有:

因为红﹑绿﹑蓝三基色能够合成自然界所有的色彩,因此在电子设备和软件中,经常使用红绿蓝三基色合成五颜六色的图像。用以上的相加混色所表示的颜色模式成为RGB模式

1:CvLoadImage(“”,0)所得到的图像即为灰度单通道图像,所对应的像素即为Y;而与split函数得到的单通道图像R,G,B不一样,但其亮度显示也是按照下图的直线来显示的<即为RGB空间的直线>

2:三通道图像也可能是灰度图像,当三通道值相等时,所对应的三通道图像就是灰度图像<可以通过以下程序画出来>。即RGB space空间中(0,0,0)和(1,1,1)两线上所有点就是灰度图像—>三通道图不一定是彩色的,彩色图一定是三通道的


3:单通道图像亮度显示也是通过下图来显示的




H:色调 0°对应红色, 120°对应绿色, 240°对应蓝色---对应不同的颜色 取值范围0~360

S:饱和度  比若说:红色的纯度,越白纯度越低,取值范围0~1

V:亮度  比如你穿了一件红色衣服 在白天亮度较高(0~255之间)傍晚或者黄昏就比较低(0~255之间)即多少的光照上去反射出来被看见,取值范围0~255

需要注意的是:由于加载进来图像是uchar,最多只能是255,而opencv正常程序的结构显示H色调都会小于等于180<因为程序知道表示不了360,直接全部缩小到180>,而H色调的取值范围0~360,因此我们需要将图像转换成float类型,而cvConvertScale 可以实现放大缩小偏移同时可以做类型转换;之后我们可以将hsv各通道转换到0~255之间,使用到的函数仍然是cvConvertScale 。最后需要注意的一点是:CvShowImage显示的图像都会被当做RGB颜色空间的图像来处理.

下面给出这之间范围变化的代码:

1:没有考虑H(色调)范围的代码,此时H的范围只能在0~180之间。



2:将色调H的取值范围转换到0~360之间


3:将H,S,V的范围转化到0~255之间


如果你的电脑可以用光盘启动到DOS底下的话,可以用系统密码修改软件来搞定

1、用win98启动软盘或者光盘进入DOS环境运行dospass,在“Your choince:[ ]”中输入“1”(选择逻辑磁盘),按Enter键后,会出现显示你的电脑硬盘分区表窗口,此时你仍然继续按Enter键,会出现已检测到磁盘MS SAM Database文件窗口。再继续按Enter键,会出现一个窗口图,

从图中我们可以看到,系统中的用户会全部显示出来,在“Your choince:[ ]”中输入“0”后按Enter键(如果你的系统管理员用户名称不是Administrator,而是其他名称的话,只要输入其名称前的序列号即可)。

3、破解密码是为解决自己忘记密码的情况,请勿用于非法用途,否则后果自负。

在这个方法中,mOnBatteryTimeBase是TimeBase的一个实例,专门用于在电池没有插入充电的情况下做一些统计时间的工作。TimeBase的属性值如下:

以上这些属性值所代表含义,通过具体的场景分析可得到,而在分析推导的过程中,需要了解puteUptime()方法:


 
 
 
 
 
 
 



这个方法用来返回总的、最后充满电后的或当前的电池正常运行时间,包括休眠时间。其原理和computeBatteryRealtime()方法一样,这里不再说明,相关代码如下:







现在回到BatteryStatsHelper的refreshStats()中,进入到核心内容,也就是耗电量的计算部分。关于八个耗电统计计算器的实例化,这里暂且不分析,在之后的内容中会独立分析。


统计耗电量分为两部分:软件耗电和硬件耗电,分别用
processAppUsage()方法和processMiscUsage()进行统计,下面分别来看其如何统计的。

 
processAppUsage(asUsers)方法用来统计软件耗电量。在进行统计时,是以uid为单位进行统计,Android中的Uid是在应用安装时由系统分配的,每个应用对应一个uid,不过通过清单文件中的shareUserId可以指定两个应用的Uid相同。
在统计耗电量时,每个Uid,都会有一个对应的BatterySipper对象,八大计算器计算后的数据将会保存在BatterySipper对象中,下面详细看这个方法是如何实现的:
详细的解释都在方法注释中了,接下来看看统计硬件耗电量的方法。

 
processMiscUsage()方法用来统计硬件耗电量,在这个方法中,会分别统计多个类型的耗电量,该方法如下:
我们一个个看这些方法:

 
 
 
 
 
 

 
 
 
 

 
 
 
 
 
 
这个方法中一部分逻辑还有待研究,做个标记。

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 
当统计完各个应用和硬件的耗电量之后,让我们再回到refreshStats()中,看其最后两部分的逻辑。

 
 
 
 
 
 
在这个方法中,有两个作用:
  • 2.根据每个应用进程前台活动时间,获取每个应用处于前台时的屏幕耗电量。
 
其中第一点已经说过了,有些耗电量的BatterySipper可以进行隐藏,例如在Settings中,并没有将所有的统计的BatterySipper都列出来,而是将有的隐藏掉了。
再来说第二点,因为在之前统计屏幕耗电量时,统计的是屏幕亮屏时的耗电量,并没有单独对某一个应用在前台时屏幕耗电量进行统计,因此这里通过获取应用在前台的时间,得到每个应用对屏幕的耗电量,具体计算公式为:
单个应用对屏幕的耗电量 = 总的屏幕亮屏耗电量 * 单个应用处于前台的时长 / 所有应用处于前台的总时长。

分析到这里,关于refreshStats()方法中的大部分流程就完毕了。接下来简单看看BatterySipper类。
这个类在前面的计算中数次用到,但是并没有进行说明,这里对它进行下说明。
BatterySipper是一个用来存放应用、系统服务、硬件的耗电量的一个类,它定义了多个表示电量相关的属性,其中还定义了一个枚举类,下面我们简单看下其内部逻辑。

 

 

 
这个方法用来统计一个BatterySipper的总耗电量:
其他方法不再说明了,使用的也比较少,其中还有一个add()方法,这个方法我们在分析每个耗电量计算器时在说明。
对于BatteryStatsHelper中耗电量统计已经进行了完整的分析,现在来对耗电量统计做个比较清晰的总结。

统计耗电量时,以uid为单位(Android中每个应用都有唯一uid),通过八个PowerCalculator对象计算每个应用分别使用对应资源(如cpu、wakelock)的耗电量,然后存储到对应的BatterySipper对象中。


通过八个耗电量计算器得到总的耗电量后,这个耗电量并不是最终值,在BatteryStatsService中,也对耗电量做了一个记录:最低放电量近似值和最高放电量近似值(mLowDischargeAmountSinceChargemHighDischargeAmountSinceCharge),每放一个电,该值累计加1。这俩值会和计算后的值进行对比,如果计算的耗电量 最高放电量,则说明多算了耗电量,因此会将这部分多算的耗电量存储到BatterySipper.DrainType.OVERCOUNTED类型的BatterySipper中。
有时候一些设备在进入Settings后,耗电信息中出现“多算了的”或者“少算了的”项,就是由于这个原因。

我要回帖

更多关于 老xp系统怎么调亮度 的文章

 

随机推荐