幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

边学边玩AI视觉,距离测量,自制AI小游戏,附python完

  各位小伙伴好,今天和大家分享一下如何使用opencvmediapipe创建一个AI视觉小游戏,先放图看效果。
  游戏规则,用手按下屏幕上的圆形按钮,每按一次后松开,按钮就随机出现在屏幕上的一个位置,看规定时间内能准确按下多少次按钮。根据手和摄像头之间的距离,当距离小于30cm,并且按钮在绿框内部,则认为是按下按钮,按钮变颜色,松开后,得分加一,并且按钮随机出现在另外一个位置。
  游戏界面,左上角31代表FPS值,中间Score代表得分,Time代表游戏时间剩余几秒,31cm代表手和摄像机的之间距离。
  结算界面,显示最终得分score,按下键盘上的r键重新开始游戏。
  1。导入工具包安装工具包pipinstallopencvcontribpython安装opencvpipinstallmediapipe安装mediapipepipinstallmediapipeuser有user报错的话试试这个pipinstallcvzone安装cvzone导入工具包importcv2fromcvzone。HandTrackingModuleimportHandDetector手部追踪方法importtimeimportmathimportrandom
  21个手部关键点信息如下,本节我们主要研究食指根部5和小指根部17的坐标信息。
  本节所用的手部关键点检测的MediaPipe基本方法我参考我之前的文章:https:blog。csdn。netdgvv4articledetails122023047?spm1001。2014。3001。5501,这里直接使用已经定义好的手部关键点检测方法。2。检测手部关键点(1)cvzone。HandTrackingModule。HandDetector()是手部关键点检测方法
  参数:
  mode:默认为False,将输入图像视为视频流。它将尝试在第一个输入图像中检测手,并在成功检测后进一步定位手的坐标。在随后的图像中,一旦检测到所有maxHands手并定位了相应的手的坐标,它就会跟踪这些坐标,而不会调用另一个检测,直到它失去对任何一只手的跟踪。这减少了延迟,非常适合处理视频帧。如果设置为True,则在每个输入图像上运行手部检测,用于处理一批静态的、可能不相关的图像。
  maxHands:最多检测几只手,默认为2
  detectionCon:手部检测模型的最小置信值(01之间),超过阈值则检测成功。默认为0。5
  minTrackingCon:坐标跟踪模型的最小置信值(01之间),用于将手部坐标视为成功跟踪,不成功则在下一个输入图像上自动调用手部检测。将其设置为更高的值可以提高解决方案的稳健性,但代价是更高的延迟。如果mode为True,则忽略这个参数,手部检测将在每个图像上运行。默认为0。5
  它的参数和返回值类似于官方函数mediapipe。solutions。hands。Hands()(2)cvzone。HandTrackingModule。HandDetector。findHands()找到手部关键点并绘图
  参数:
  img:需要检测关键点的帧图像,格式为BGR
  draw:是否需要在原图像上绘制关键点及识别框
  flipType:图像是否需要翻转,当视频图像和我们自己不是镜像关系时,设为True就可以了
  返回值:
  hands:检测到的手部信息,由0或1或2个字典组成的列表。如果检测到两只手就是由两个字典组成的列表。字典中包含:21个关键点坐标,检测框坐标及宽高,检测框中心坐标,检测出是哪一只手。
  img:返回绘制了关键点及连线后的图像
  代码如下importcv2fromcvzone。HandTrackingModuleimportHandDetectorimporttimeimportmath(1)捕获摄像头capcv2。VideoCapture(0)捕获电脑摄像头cap。set(3,1280)设置显示窗口宽度1280cap。set(4,720)显示窗口高度720pTime0处理第一帧图像的起始时间(2)接收手部检测方法detectorHandDetector(modeFalse,静态图模式,若为True,每一帧都会调用检测方法,导致检测很慢maxHands1,最多检测几只手detectionCon0。8,最小检测置信度minTrackCon0。5)最小跟踪置信度(3)处理每一帧图像whileTrue:返回图像是否读取成功,以及读取的帧图像imgsuccess,imgcap。read()(4)获取手部关键点信息检测手部信息,返回手部关键点信息hands字典,绘制关键点和连线后的图像imghands,imgdetector。findHands(img)print(hands)(5)图像显示计算FPS值cTimetime。time()处理一帧图像所需的时间fps1(cTimepTime)pTimecTime更新处理下一帧的起始时间把fps值显示在图像上,img画板,显示字符串,显示的坐标位置,字体,字体大小,颜色,线条粗细cv2。putText(img,str(int(fps)),(50,70),cv2。FONTHERSHEYPLAIN,3,(255,0,0),3)显示图像,输入窗口名及图像数据cv2。namedWindow(img,0)窗口大小可手动调整cv2。imshow(img,img)ifcv2。waitKey(20)0xFF27:每帧滞留20毫秒后消失,ESC键退出break释放视频资源cap。release()cv2。destroyAllWindows()
  打印检测到的手部关键点信息hands列表,lmList中存放21个手部关键点的像素坐标,bbox中存放检测框的左上角坐标和框的宽高,center存放检测框的中心坐标,type检测的是左手还是右手。〔{lmList:〔〔227,607〕,〔335,585〕,〔439,515〕,〔508,440〕,〔563,384〕,〔434,384〕,〔491,292〕,〔520,231〕,〔543,176〕,〔380,349〕,〔423,241〕,〔445,169〕,〔459,106〕,〔320,336〕,〔347,228〕,〔368,156〕,〔387,94〕,〔250,339〕,〔255,245〕,〔264,183〕,〔279,126〕〕,bbox:(227,94,336,513),center:(395,350),type:Left}〕〔{lmList:〔〔219,628〕,〔324,605〕,〔427,532〕,〔489,451〕,〔540,390〕,〔424,401〕,〔483,310〕,〔511,250〕,〔532,195〕,〔369,366〕,〔415,263〕,〔436,192〕,〔449,129〕,〔308,353〕,〔340,250〕,〔362,181〕,〔382,120〕,〔238,358〕,〔248,268〕,〔261,209〕,〔278,154〕〕,bbox:(219,120,321,508),center:(379,374),type:Left}〕
  图像显示结果如下:
  3。距离检测,确定像素距离和实际厘米距离之间的映射关系
  距离检测的思路是,获取手掌关键点信息中的食指根部5坐标lmList〔5〕和小指根部17坐标lmList〔17〕,计算这两个关键点之间的像素距离distance。将像素距离映射到手掌距离屏幕的实际距离。
  在确定映射公式之前我们得先看一下掌间距离和相机与手之间的距离的对应关系,如下面代码中的第(3)步。x代表掌间距离,y代表相机和手之间的距离,举个例子,手掌间的像素距离为300时,对应的相机和手之间的距离是20cm。绘图查看对应关系。
  这里就简单的使用一个二次多项式去拟合这条曲线,得到手掌和摄像机之间的大致的距离。感兴趣的可以用指数拟合,更准确一些。使用np。polyfit(x,y,2)
  函数,指定x和y之间是2次多项式关系,即
  。返回值是一个数组coff,存放多项式的系数A、B、C。
  因此,在计算实际距离distanceCM时,就可以根据二次多项式公式计算每一帧图像的手掌和摄像机之间的距离,distanceCMAdistance2BdistanceC。
  我们在上述代码中补充。importcv2importcvzonefromcvzone。HandTrackingModuleimportHandDetectorimporttimeimportmath(1)捕获摄像头capcv2。VideoCapture(0)捕获电脑摄像头cap。set(3,1280)设置显示窗口宽度1280cap。set(4,720)显示窗口高度720pTime0处理第一帧图像的起始时间(2)接收手部检测方法detectorHandDetector(modeFalse,静态图模式,若为True,每一帧都会调用检测方法,导致检测很慢maxHands1,最多检测几只手detectionCon0。8,最小检测置信度minTrackCon0。5)最小跟踪置信度(3)找到手掌间的距离和实际的手与摄像机之间的距离的映射关系x代表手掌间的距离(像素距离),y代表手和摄像机之间的距离(cm)x〔300,245,200,170,145,130,112,103,93,87,80,75,70,67,62,59,57〕y〔20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100〕绘图查看xy的对应关系importmatplotlib。pyplotaspltplt。plot(x,y)plt。xlabel(x)plt。ylabel(y)plt。title(reflection)因此我们需要一个类似yAX2BXC的方程来拟合importnumpyasnpcoffnp。polyfit(x,y,2)构造二阶多项式方程coff中存放的是二阶多项式的系数A,B,C(4)处理每一帧图像whileTrue:返回图像是否读取成功,以及读取的帧图像imgsuccess,imgcap。read()(5)获取手部关键点信息检测手部信息,返回手部关键点信息hands字典,不绘制图像handsdetector。findHands(img,drawFalse)如果检测到手的话hands字典就不为空ifhands:获取检测框的信息(x,y,w,h)x,y,w,hhands〔0〕〔bbox〕获取字典中的关键点信息,key为lmListlmListhands〔0〕〔lmList〕hands〔0〕代表检测到的这只手的字典信息,hands是一个列表print(handslandmarks:,lmList)获取食指根部5和小指根部17的坐标点x1,y1lmList〔5〕x2,y2lmList〔17〕勾股定理计算关键点5和17之间的距离,并变成整型distanceint(math。sqrt((x2x1)2(y2y1)2))print(distancebetween5and17:,distance)拟合的二次多项式的系数保存在coff数组中,即掌间距离和手与相机间的距离的对应关系的系数A,B,Ccoff得到像素距离转为实际cm距离的公式yAx2BxCdistanceCMAdistance2BdistanceCprint(distanceCM:,distanceCM)把距离绘制在图像上,简化了cv2。putText(),cvzone。putTextRect(img,f{(int(distanceCM))}cm,(x10,y10))绘制手部检测框cv2。rectangle(img,(x,y),(xw,yh),(0,255,0),2)(6)图像显示计算FPS值cTimetime。time()处理一帧图像所需的时间fps1(cTimepTime)pTimecTime更新处理下一帧的起始时间把fps值显示在图像上,img画板,显示字符串,显示的坐标位置,字体,字体大小,颜色,线条粗细cv2。putText(img,str(int(fps)),(50,70),cv2。FONTHERSHEYPLAIN,3,(255,0,0),3)显示图像,输入窗口名及图像数据cv2。namedWindow(img,0)窗口大小可手动调整cv2。imshow(img,img)ifcv2。waitKey(20)0xFF27:每帧滞留20毫秒后消失,ESC键退出break释放视频资源cap。release()cv2。destroyAllWindows()
  打印每帧的21个关键点信息handslandmarks,掌间像素距离distancebetween5and17,手掌和相机间的厘米距离distanceCMhandslandmarks:〔〔211,581〕,〔276,570〕,〔340,530〕,〔373,468〕,〔371,413〕,〔360,465〕,〔382,403〕,〔358,423〕,〔340,458〕,〔327,443〕,〔345,384〕,〔311,424〕,〔292,466〕,〔294,428〕,〔306,374〕,〔281,414〕,〔266,457〕,〔261,419〕,〔271,378〕,〔256,407〕,〔246,443〕〕distancebetween5and17:109distanceCM:56。75208816895032handslandmarks:〔〔151,608〕,〔212,607〕,〔286,557〕,〔306,486〕,〔280,436〕,〔301,483〕,〔322,418〕,〔295,473〕,〔287,505〕,〔262,466〕,〔273,409〕,〔248,478〕,〔246,502〕,〔222,457〕,〔229,409〕,〔210,478〕,〔210,503〕,〔180,451〕,〔185,417〕,〔177,467〕,〔177,491〕〕distancebetween5and17:125distanceCM:48。49262820874043
  显示结果如图,23cm代表手掌距离摄像机有多远。
  4。创建虚拟按键,建立游戏规则
  从第(8)步开始,如果手掌距离摄像机小于30cm,并且按钮的中心点坐标(cx,cy)在检测框内部,那么就认为此时手掌已经按下按钮,counter变成1,按钮变成红色,counter变成2。如果手掌一直按着按钮,那么counter一直保持着counter2。如果松开那么此时的counter自动从2加1,变成counter3。颜色置为初始值,得分加一,按钮随机出现在屏幕中的任意位置random。randint(),重置按钮确认器counter0。
  keyord(r)表示当点击键盘上的R键时,可以重新开始游戏。importcv2importcvzonefromcvzone。HandTrackingModuleimportHandDetectorimporttimeimportmathimportrandom(1)捕获摄像头capcv2。VideoCapture(0)捕获电脑摄像头cap。set(3,1280)设置显示窗口宽度1280cap。set(4,720)显示窗口高度720pTime0处理第一帧图像的起始时间(2)接收手部检测方法detectorHandDetector(modeFalse,静态图模式,若为True,每一帧都会调用检测方法,导致检测很慢maxHands1,最多检测几只手detectionCon0。8,最小检测置信度minTrackCon0。5)最小跟踪置信度(3)找到手掌间的距离和实际的手与摄像机之间的距离的映射关系x代表手掌间的距离(像素距离),y代表手和摄像机之间的距离(cm)x〔300,245,200,170,145,130,112,103,93,87,80,75,70,67,62,59,57〕y〔20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100〕绘图查看xy的对应关系importmatplotlib。pyplotaspltplt。plot(x,y)plt。xlabel(x)plt。ylabel(y)plt。title(reflection)因此我们需要一个类似yAX2BXC的方程来拟合importnumpyasnpcoffnp。polyfit(x,y,2)构造二阶多项式方程coff中存放的是二阶多项式的系数A,B,C创建初始的按钮的位置cx,cy255,255初始的按钮颜色红色,如果接下来手碰到了它就变颜色color(255,255,0)设置计数器,有没有碰到按钮counter0设置初始得分score0设置游戏开始的起始时间startTimetime。time()设置游戏的总时间10stotalTime20(4)处理每一帧图像whileTrue:返回图像是否读取成功,以及读取的帧图像imgsuccess,imgcap。read()水平翻转图像,呈镜像关系imgcv2。flip(img,1)0代表垂直方向翻转,1代表水平方向如果当前帧时间减去起始时间小于预设的时间,那么游戏继续进行iftime。time()startTimetotalTime:(5)获取手部关键点信息检测手部信息,返回手部关键点信息hands字典,不绘制图像handsdetector。findHands(img,drawFalse)如果检测到手的话hands字典就不为空ifhands:获取检测框的信息(x,y,w,h)x,y,w,hhands〔0〕〔bbox〕获取字典中的关键点信息,key为lmListlmListhands〔0〕〔lmList〕hands〔0〕代表检测到的这只手的字典信息,hands是一个列表print(handslandmarks:,lmList)获取食指根部5和小指根部17的坐标点x1,y1lmList〔5〕x2,y2lmList〔17〕勾股定理计算关键点5和17之间的距离,并变成整型distanceint(math。sqrt((x2x1)2(y2y1)2))print(distancebetween5and17:,distance)拟合的二次多项式的系数保存在coff数组中,即掌间距离和手与相机间的距离的对应关系的系数A,B,Ccoff得到像素距离转为实际cm距离的公式yAx2BxCdistanceCMAdistance2BdistanceCprint(distanceCM:,distanceCM)把距离绘制在图像上,简化了cv2。putText(),cvzone。putTextRect(img,f{(int(distanceCM))}cm,(x10,y10))绘制手部检测框cv2。rectangle(img,(x,y),(xw,yh),(0,255,0),3)(8)设置游戏规则ifdistanceCM30:如果手距相机的距离小于40cm,并且按钮在检测框内部,就认为碰到了ifxcxxwandycyyh:按钮在检测框内部counter1计数器变成1证明碰到了如果手碰到了按钮ifcounter:counter1如果碰到counter就一直是2,接下去画图color(0,0,255)按钮变成红色如果没有碰到,那么程序执行到这里时counter等于3,将按钮颜色重置ifcounter3:手一旦没有碰到按钮,按钮就随机换位置cxrandom。randint(100,1100)cyrandom。randint(100,620)得分加1分,因为是按下按钮后松开才能得分score1重置按钮颜色color(255,255,0)counter0(9)创建游戏界面创建按钮,触碰到了就变颜色按钮出现在屏幕的随机位置,img画板,圆心位置,半径,颜色color,填充cv2。circle(img,(cx,cy),30,color,cv2。FILLED)cv2。circle(img,(cx,cy),20,(0,255,255),4)把按钮做得好看一些cv2。circle(img,(cx,cy),10,(100,100,255),4)创建计时器,img画板,显示文本,位置,大小,背景颜色,offset上下左右填充nowTimetotalTimeint(time。time()startTime)显示剩余时间cvzone。putTextRect(img,fTime:{nowTime},(900,80),scale4,colorR(255,0,0),offset20)创建得分计数板,在规定时间内碰到了几次按钮scoregetstr(score)。zfill(2)字符串,两位数01,02cvzone。putTextRect(img,score:scoreget,(400,80),scale4,colorT(0,0,255),colorR(0,255,255),offset20)如果时间到了,显示总得分else:cvzone。putTextRect(img,GameOver,(400,250),scale5,colorT(0,0,255),colorR(255,255,0),offset20,thickness8)cvzone。putTextRect(img,score:scoreget,(490,350),scale4,colorT(0,0,255),colorR(0,255,0),offset20)cvzone。putTextRect(img,pressrtorestart,(350,450),scale4,colorT(255,255,255),colorR(255,0,255),offset20)(10)图像显示计算FPS值cTimetime。time()处理一帧图像所需的时间fps1(cTimepTime)pTimecTime更新处理下一帧的起始时间把fps值显示在图像上,img画板,显示字符串,显示的坐标位置,字体,字体大小,颜色,线条粗细cv2。putText(img,str(int(fps)),(50,70),cv2。FONTHERSHEYPLAIN,4,(255,0,0),3)显示图像,输入窗口名及图像数据cv2。imshow(img,img)keycv2。waitKey(1)重置游戏ifkeyord(r):startTimetime。time()重置开始时间score0重置得分退出游戏ifkey27:ESC键退出显示break释放视频资源cap。release()cv2。destroyAllWindows()
  当手掌按下按钮,按钮颜色从青色变成红色,手不松开按钮的话按钮的颜色保持是不变,位置也不变,并且得分板也不增加。只有松开后才会重置位置,计数加一。练习拍击按钮的快准狠。

强劲复苏武夷山长白山国庆游客接待量大幅增长多地国庆假期旅游数据陆续出炉,其中,福建武夷山和吉林长白山游客接待量增速均超过200。2022年10月2日,福建南平,游客在武夷山国家公园天游峰景点游玩。视觉中国图……品尝秋天的故事,陶醉诗意秋天的美,是静默的,打开窗,是一帘清凉,将夏的那抹炎热,掩埋在秋衣裙底下,有一点凄凉,一点悲伤,一点宁静,一点幻想。在季节中浸染后的秋天,落叶便成了满地的绯红,浓绿并未褪……阳了后发烧的退烧经验浑身酸疼,最开始37。6到39。5到后来降到38,第三天已经降到36。5也不酸疼了,中午洗了个头(千万不要洗头)傍晚又开始烧,我只说我自己的经验。布洛芬缓释剂胶囊,别空腹……中国移动冯江涛ChunJun(原FlinkX)在数据入湖中的ChunJun(原FlinkX)是一个基于Flink提供易用、稳定、高效的批流统一的数据集成工具。2018年4月,秉承着开源共享的理念,数栈技术团队在github上开源了Fli……官方西班牙队左后卫加亚因伤无缘世界杯北京时间11月18日晚,西班牙队官方宣布,球队左后卫加亚因伤退出大名单,无缘即将开始的卡塔尔世界杯。西班牙足协在官网上发表公告,加亚因伤离开了西班牙队,他将不会参加卡塔尔……散文走进初冬,心怀希望,遇见更多美好作者:子墨初冬,北风卷着落叶,拨开残云,露出一抹轻寒,这水瘦山寒的季节,苍凉了岁月,也给世界换个底色。秋去冬来,时光流转不停,季节的脚步依旧向着时光深处走去,身边的……CBA最新消息!霍楠批评杜锋,辽宁试训顶级中锋,上海又换外援离开中国男篮帅位之后,杜锋的状态要比之前好了很多,带领广东宏远回到积分榜前四,没事还和球员拍点搞笑的视频。不过在之前和四川男篮的比赛中,杜锋有一个疑似绊人的动作,这也引起了一些……200亿元的投资项目为啥落户扶风而不是蟠龙塬按理说蟠龙塬新区正是宝鸡北上东扩南移战略的一部分,而且多年来新区建设巨大,费功不少,据说当时招商引资项目就有几十个亿,涉及电子、教育、房产、加工、零配件等诸多领域,是打造宝鸡副……让我成为人间清醒大女主的7个人生建议之前看到的一句话:我以为我的二十岁,会去看山河大海,落日余晖。可事实上是,我还在找寻我自己。想想何止二十岁,很多的人三十、四十岁也依旧拎不清、想不通,总结了我自己过去近1……远去了的青葱岁月夜深人静万籁俱寂,睡不着觉,经常会想起一些往事。青葱岁月,年轻而美好,异性相吸男欢女爱。羞涩的眼神,朦胧的感觉,心潮荡漾激情燃烧。时光荏苒,青春转瞬即逝,几十年过去……小月龄宝宝第一口钙怎么补?总结攻略,新手爸妈必看钙是宝宝成长过程中必不可少的重要营养元素,在宝宝常规体检也都会问现在吃奶量多少,有没有吃AD和钙?可见钙对宝宝来说是非常重要的,那么到底怎么给宝宝补钙呢?今天我就帮新手爸……大爆冷!国乒小将30横扫强敌,中国队豪夺4冠,韩国抢走1冠北京时间9月10日晚,乒乓球WTT阿曼赛的最后一战男双决赛落下帷幕,国乒组合牛冠凯赛林威与韩国强敌李尚洙安宰贤狭路相逢,展开激烈对决,结果中国队的非主力小将一黑到底,30横扫两……
WCBA三颗冉冉升起的00后希望之星,上升通道已打开1、罗欣棫罗欣棫在全运会的时候,已经渐露锋芒,成为江苏女篮锋线上一颗闪耀的新星,联赛开始之后,她越打越好,并且逐渐显示出一种全能锋线的特质。五轮过后,场均18。6分……揭秘洪秀全有多少妻妾?天京沦陷后,她们的命运又是怎样的?在中国近代的时候,一起农民起义的运动对我国产生了深远的影响,领导起义的洪秀全在占领了南京之后,面对着自己权力的膨胀,他开始了享乐。洪秀全喜欢女人,他就将南京的很多女子霸占……拜仁主帅纳格尔斯曼熬夜也要看北京冬奥会来源:新华社新华社柏林2月3日电(记者刘旸)德甲拜仁慕尼黑队主教练纳格尔斯曼3日接受记者线上采访时表示,自己是一名热情忠实的冰雪运动爱好者,即使少睡觉也要尽可能多地关注北……男足有腹肌吗?女足有我建议男足不管是流汉了,还是流泪了都不要掀起球衣擦脸,那样会被别人发现一整张平整光滑的真皮。做一只鸵鸟吧,把头埋在土里!男足的腹肌去哪里了?这个春节,乘着北京冬奥会的七彩……谷爱凌方式能否替代国足归化,给国足带去未来?刘建宏点评太到位国足在12强败给了待遇有差距、疫情防疫多少影响到训练的越南队,引发了不少的震动。有不少球迷表示,这样的国足,不如就地解散,以免丢人现眼。毕竟拿着明星的待遇,享受着无数球迷的拥护……除了纳达尔,现役还有很多历史第一人或候选!比如梅西和詹姆斯原创氧气是个地铁1月31日,纳达尔在温网男单决赛0比2落后梅德韦杰夫的情况下,连追三盘,完成大逆转,夺冠!这是纳达尔职业生涯第21个大满贯冠军,历史第一人,完成了双圈全满……2022想买手机的小伙伴们,不妨看看这篇文章小伙伴们知道怎样买手机才能最便宜吗?其实主要是要选对买手机的时间和方式,那怎样选对时间和方式呢?小编给大家分析一下。第一:买手机要选对时间一年当中有三个时间买手机最……中国游客不来消费亚洲重启旅游业谁来买单?(悉尼路透电)亚洲逐步对国际旅客开放门户,对本区域旅游业者而言,如同久旱逢甘霖。然而,每年在国际旅游市场消费多达2550亿美元(约3440亿新元)的中国游客不见踪影,旅游业者须……1亿像素骁龙870,从3299元跌至2499元,从高端市场跌在每年的下半年,就是很多人换手机的时候,一方面有双十一的电商活动,另外一方面新款iPhone13的发布,也让不少国产手机厂商纷纷降价应对。要知道,就连不太会降价的华为,其……我们的故事也许久违的雪,也许从未来过,也许我们的故事从未发生过,所以像冬天的零星白雪那样的坠落。冰封的雪白,我依然在等待,等待我们的爱,等待你说过的未来。既然我们选择了相爱可为何要……开中国坦克,用解放军战术,这支暴打卡扎菲军队的军队什么来头?1979年,坦桑尼亚与他的邻国乌干达爆发了一场战争。令乌干达士兵感到奇怪的是,他们的敌人嘴里经常蹦出几句陌生的语言;就连使用的战术,也是他们未曾见过的。彼时的乌干达士兵并……化妆I经典美学标准三庭五眼的调整逻辑化妆是提升形象的一个重要部分,所以现在越来越多的姑娘开始学化妆了。大部分姑娘都追求皮肤越白越好、眼睛越大越好、鼻子越高越好,认为这样妆容就完美了。真的是这样吗?著名化妆师……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网