护栏求新品套餐介绍文案范文求一段

拒绝访问 | www.demose.cn | 百度云加速
请打开cookies.
此网站 (www.demose.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(442eeafa24af43c5-ua98).
重新安装浏览器,或使用别的浏览器&p&十几岁的时候谈恋爱,和男孩子一起吃夜市。&/p&&p&第一次约会,穿了白底碎花裙,出门前细细致致捯饬了两个小时,从头到脚都为了一场浪漫的约会做铺垫。到地儿了才知道他要带我去夜市摊儿,满地油污,烟雾弥漫,七零八落的椅凳胡乱散着,睡眼惺忪的男孩子穿着拖鞋,乐呵呵拉我坐下。&/p&&p&席间一直不痛快,胡乱捣了几筷头,白裙子被尖叫着乱跑的小孩子踢了一脚泥,鼻子一酸眼泪都要掉下来。&/p&&p&要说平时也不是没有过和姐妹们穿着睡衣在夜市摊儿上吆五喝六的喝啤酒,偏偏那天就莫名觉得委屈,闷头吃完,提起包就自顾自的往家走,男孩子从身后追上来,急切询问原因,我倔的很,拗着脖子不说话。其实我心里清楚,就是因为他看起来没有认真准备约会,被重视感寥寥,可我又不愿让自己显得挑剔,所以不肯开口,越想越委屈。&/p&&p&他最大程度的耐心问我,一遍遍道歉,在浓稠的夜色里几乎以一种卑躬屈膝的姿态说好话。&/p&&p&我不是没谈过恋爱,这样的场景更不是第一次经历,女生一言不发,男生低声下气,情境经典的仿佛电影天生就该这么演。全天下的女孩子们都是同样的女主角,享受同样的剧本和情绪。&/p&&p&我突然觉得羞耻,身体一点点从剧本里抽离,就看到了真实的自己。&/p&&p&习惯于男生单方面的,主动的,迎合的,低下的姿态,陷入自我编织的恋爱常规里自以为然,“这时候要生气,不能说话,时间还没到,他得再道会儿歉,无论如何不能主动开口。”&/p&&p&情绪早已消解,身体还在剧本里僵持。我就站在那里,突如其来的陷入了困惑。&/p&&p&“我并没有那么生气,那么我为什么还要继续表演我的委屈,挥霍他的歉意。”&/p&&p&我到底在矛盾什么。&/p&&p&那也是我第一次对于女生在恋爱关系中饰演的角色有了初步的质疑。&/p&&p&我似乎习惯于做一个被保护者,被偏爱者,而从未想过我应该是一个独立的,平等的,可以被正常交流的个体。&/p&&p&我几乎是仗着他的紧张和在意,堂而皇之的关闭了自己的沟通渠道。把自己从一个语言没有障碍的正常人,变成了一个情绪操控的机器。我不愿意表达自己的情绪,把表达情绪的义务推给了别人。我就是一个主动放弃沟通主权的,愚蠢的,短视的,残缺的,虚假的人。我像一个孱弱而娇气的动物,大火压境不肯自救,硬要等人寻着路过来找我。&/p&&p&这个发现让我惊觉起来,焦虑和不安接踵而来。&/p&&p&我必须跳出剧本,直面自己,掐灭那些表演性的,自我高潮性的,夸大性的情绪。&/p&&p&这只是零星小事,真的大火来了,只有我自己可以救我自己。&/p&&p&他那边儿还在道歉,我这边突然开口说对不起。&/p&&p&“我应该主动告诉你我的不满,我希望你可以像我一样有所准备,考虑到我的心情带我去一家有氛围的餐厅,我不是不喜欢夜市,我只是希望被重视。&/p&&p&我一直不说话,让你这么着急,真的对不起。”&/p&&p&男孩子呆了一会儿,说没关系,他只是没想那么多,以后一定会注意。我能道歉他很意外,也很感激我能说出来。&/p&&p&我突然就在十几岁的当口儿,隐隐约约摸索出了恋爱道理的毛皮。&/p&&p&很多女孩子都是太墨守成规的演员了,长期融入角色,我们习惯做一个被保护的,被拯救的弱者,我们享受弱者的权利,享受男生的卑微,在理性和感性的交界来回踱步,不肯踏出去。&/p&&p&可这样一点都不酷。我们不想被称作弱者,却在弱者的世界自得其乐,我们永远被动,也就永远无法自己掌控自己的感情。&/p&&p&我们相爱,不是为了被人照顾,被人偏爱。被人宠到生活不能自理。&/p&&p&我们相爱,是因为我们被对方吸引,我们互相探索,努力融合,互相取暖,互相依偎。&/p&&p&舒婷在致橡树里说,我必须是你近旁的一株木棉,作为树的形象和你站在一起。&/p&&p&“我如果爱你,就一定会尽可能告诉你,我到底为什么生气。”&/p&&p&&br&&/p&&p&&br&&/p&&p&个人公众号「无妄书」。&/p&&p&把最真诚的东西交托给你。&/p&&p&等你来。&/p&
十几岁的时候谈恋爱,和男孩子一起吃夜市。第一次约会,穿了白底碎花裙,出门前细细致致捯饬了两个小时,从头到脚都为了一场浪漫的约会做铺垫。到地儿了才知道他要带我去夜市摊儿,满地油污,烟雾弥漫,七零八落的椅凳胡乱散着,睡眼惺忪的男孩子穿着拖鞋,…
&p&已删。&/p&
&p&求关注&/p&&p&&b&树下野狐的搜神记&/b&,这本小说可以说是远古级别的神作了,印象中比诛仙都还要早一些,作者树下野狐是北大的毕业生,文字功底深厚,想象力天马行空,搜神记系列,构造出了一个宏大瑰丽的中国上古奇幻世界,里面的人物也是栩栩如生,让人印象深刻,号称开创出了华语奇幻文学的新局面,我认为这个评语十分恰当。我最喜欢这本小说的倒不是剧情,而是作者汪洋恣肆的文笔与想象,那些上古的千万事物,太迷人了。&/p&&p&&b&跳舞的猎国&/b&,我认为这是跳舞非常成熟的一部作品了,虽然没有恶魔法则那种少年气,想象力纵横的大场面,可是变得深沉厚重了许多,其中许多都内容都值得仔细的品味,比如说地精日记那一段,从两个不同的角度,描述了地精文明的衰亡,给人一种深深的沉思,强大的文明或许会因为自己的自大与傲慢,而将自己的毁灭,人为的制造出束缚自己的神,更好像是对于我们国家的一种影射,因为我们国家许多人都认为,需要一个像西方宗教那样的东西,来保持我们的信仰。&/p&&p&&b&知秋的十州风云志&/b&,知秋也是一个远古的大神,曾经写过一本叫做历史的尘埃的喜欢小说,这本十州风云志是一本东方式的仙侠,主角好像是一个道士,然后和一个佛家少女一起冒险,揭开了武林之中一个天大的阴谋。人物非常的生动,至今记得那个为自己弟弟而死的唐家天骄,唏嘘不已啊。还有书中反派的可怕计划,也叫人毛骨悚然。&/p&&p&&b&烽火戏诸侯的剑来&/b&,他写的雪中悍刀行我也看过,只不过不是太喜欢,但是这本新书却是异常的对我的胃口,虽然也有升级,可是这本小说最主要的应该还是剧情吧,从现在来看,主要应该是讲述浩然天下之中各种思想的代表人物之间理念的碰撞,激发出了许多令人感慨的故事。最重要的场面好看啊,所有人都充满了一种淡淡的装逼感,看起来赏心悦目。&/p&&p&&b&禹岩的极品家丁&/b&,这本小说虽然通俗小白,可应该也走得是剧情流,主要就是写主角和一个个女人之间的爱恨纠葛,每一段故事都很令人感动,特别是到了小说的最后,还有一个登峰造极的高潮,很难想象在前面那么多故事的叠在之后,作者还能够有那么深厚的笔力爆发出如此巨大的能量,当然也能够让人石更不已。&/p&&p&&b&月关的回明&/b&,锦衣夜行。月关写的小说,女性人物特别的生动,几乎每一个都叫人难以忘怀。只不过,我更想推荐他的&b&新书逍遥游&/b&。我认为逍遥游是月关的巅峰,首先是文字上已经达到了一种在网文之中可以称得上炉火纯青的程度,再次就是月关将剧本写作的一些手法融入了小说写作当中,取得了出乎意料的效果,各种巧合、冲突,接二连三爆发,让人目接不暇,叹为观止。都说猫腻什么的文青,实际上月关的文字功底,绝对不会比所谓的猫腻、烽火稍逊。&/p&&p&&b&傲无常的花都十二钗
&/b&。这是一本兵王归来的都市小说,算是这种类型的老祖级别作品吧,很多套路都是这个作者开创的(准确的说应该是从他写的老婆爱上我开始),这本书也可以算作是剧情流作品,因为推动这本小说的矛盾进展,主要是依靠主角和几个女角之间的互动、冲突。其中很多内容,足以叫人看炸,你懂得。超级喜欢里面的一个人物,迟宝宝。写的太好了!&/p&&p&&b&愤怒的香蕉的赘婿。&/b&这是一本架空的历史小说,跟庆余年很相似,先写家,主角利用他的手段翻云覆雨,主要是一些商业手段,然后写国,好像是主角平定国内叛乱,最后写天下,国与国之间的争斗。格局很大,表达出来的东西很多,内涵也深厚。而且有着各种出乎意料的剧情。主角第一次的杀人,主角剿灭梁山,主角在金銮殿之上轰杀皇帝,都堪称经典。香蕉是一个特别擅长把握、捕捉人情绪的作者,时常能够写出让人激动不已的高潮。爽爆。&/p&&p&&br&&/p&&p&&b&猫腻的间客:这里提前说一句,只评价书,不评价作者,要评价作者的请走开。&/b&这本书是我最近看完的,之前看过开头不过没有坚持下去,这一次我直接从第二卷开始看,一口气将整本书看完了,看完之后,真的很震撼。这是一本极好的书,极精彩的书。吸引我的点,在于主角许乐的石头性格,面对联邦之中各种各样的力量、理念、思想,他始终坚持最简单的判断,错的就是错的,如果当人们做了错事之后而逃脱了审判之后,那么他就会用自己的力量去审判,即便对方是实力强大的议员,即便对方是帝国的亲王,即便对方是联邦的总统,即便对方是那些各种各样强势的大人物。这种个人英雄主义看起来是真的带劲!鲁迅的遗言说,我一个都不原谅,这种绝不妥协的精神,在许乐的身上,得到了最好的体现!&/p&&p&书里面有很多猫腻的私货,有些东西我是跳过去的,有些东西是粗略看过一点的,那些东西并不见得正确,就比如说书里面最重要的一条观念吧,说是如果想要实现一个伟大的目标,但是却用了错误的方式,那么不管这么目标如何的伟大,它就是错的,放到历史之中去观察,这一点几乎没有意义,因为人不可能犯错。可是,它却能够给人带去一点思考,而这种思考,是如此的简单,就如同黑与白、正与邪那样简单,所以尤其具有巨大的力量,能够让我们对生活之中许多现象,许多我们习以为常甚至是认为天经地义的现象,提出尖锐的质疑与批判。&/p&&p&愤怒的香蕉说,网文想要立足,就要承担一种责任,启蒙民众,将他们引领到更深的层次去,间客在某些方面说,应该是做到了这一点。&/p&&p&当然这毕竟是小说,决定一部小说精彩不精彩的永远是曲折跌宕的情节,以及多姿多彩的人物,还有精彩刺激的打斗。&/p&&p&在这些方面,间客在网文之中,说是登峰造极,没有任何溢美之词,完全可以和亵渎、雪中悍刀行、赘婿……这些优秀小说进行比较。间客的情节,按照猫腻的话来说,是老瓶装新酒,里面运用了无数精彩的情节架构,但是运用之余又有着各种各样的独特创造,这样说的话,有着说空话的嫌疑,不过具体举例子的话,又可能剧透,很是纠结,大家如果好奇,可以自己去看。我感觉最突出的特点,就是主角经常陷入十死无生的绝境,然后在这种情况之下,主角往往做出最出乎意料的举动,让常人完全想象不到的举动,然后逆转死局。那是一种坐过山车般的感觉。&/p&&p&人物这方面可以说的就更多了。这里面的人我认为可以分成三部分。第一部分是上一代的老人,他们有着传奇的故事。第二部分是主角以及主角的朋友们。第三部分就是大反派和反派的朋友们。庞大、繁复,而又清晰。绝对的正邪之分在这里面是不存在的,每一个人都有着自己的坚持与理想还有过往,因此显得格外的生动格外的有感染力。就算是里面最大的反派帕布尔,到了最后也依旧散发出很惊人的魅力,让人无法确定他究竟是正是邪,从而引起很深的思考。&/p&
求关注树下野狐的搜神记,这本小说可以说是远古级别的神作了,印象中比诛仙都还要早一些,作者树下野狐是北大的毕业生,文字功底深厚,想象力天马行空,搜神记系列,构造出了一个宏大瑰丽的中国上古奇幻世界,里面的人物也是栩栩如生,让人印象深刻,号称开…
&p&某位答主的回答让人心醉啊……&/p&&p&首先G镜头是G镜头,GM是G–Master镜头,索蔡是索蔡,三者并不同,按索尼自己的定位是GM>索蔡和G镜,索蔡和G镜则属于双一流定位。&br&然后本文只针对E卡口镜头,不包涵A卡口及美能达镜头,也不包括适马MC11为主的副厂镜头及转接环。&/p&&p&GM是美能达的光学遗产和索尼的电子工艺的结合,也是目前索尼价格最高、素质最好的镜头群,包括设计在内都由索尼自己完成,全部是全画幅镜头,作为各家镜头代名词的大三元全部属于GM,除大三元外GM另外还有&/p&&p&100STF★★★&br&85 1.4★★★&br&100-400★&br&GM镜头价格全部在一万以上,最贵的为70-200 2.8。&br&GM镜头的优秀和高价绝不仅仅是因为光圈的差异,它们的镜片组数量及质量、锐度、畸变、抗眩光、边缘成像、暗角、马达等所有细节,甚至包括对机身的兼容程度(比如A9)均是属于索尼最优秀的层次,同时由于它们产量依旧很少,无法摊平其研发成品,所以GM的高价是理所当然的,等到索尼出现二代GM后一代的自然会掉价,十几年后它们就有可能如佳能小小白那样以数千入手。&/p&&p&GM镜头的总体设计特性在于“&b&焦内暴力锐,焦外柔和散&/b&”,因为完全摒弃微单的体积限制,强调专业性,所以GM镜头很舍得堆料,这导致体积重量和单反同规格镜头相似。&/p&&p&最特殊的镜头是100STF
GM。&/p&&p&&br&&/p&&p&索蔡,也就是蔡司小蓝婊加持、腾龙设计的索尼镜头,由于有光学大头蔡司的帮忙(其实只是贴标+提供镀膜),索蔡镜头其实是目前索尼中高端镜头最缺乏性价比的,也是让人吐槽索尼镜头贵的核心群体,索蔡镜头主要集中在全画幅,索蔡以定焦居多,焦段集中于广角和标准。&br&仅看眩光和鬼影方面比同级别的CN镜头略好,但是也有失败的坑爹品,比如小三元之一的24-70F4。(说真的其实索蔡整体性价比相当低,35 1.4和2470更是非常之差)&br&目前索蔡镜头如下:&br&35 1.4&br&35 2.8&br&50 1.4★&br&55 1.8★★★&br&1635 F4★★&br&2470 F4(垃圾垃圾垃圾,重要的事说三遍)&br&1670 F4(残画幅)&br&24 F1.8(残画幅)&/p&&p&索蔡特性在于“&b&体积相比GM和G头小很多,为了视频录制而维持比较顺畅的变焦/对焦阻尼,大多色散失控&/b&”,其实除了55ZA和1635ZA我真的看不上任何索蔡镜头……尤其是35 1.4和2470za,这批镜头群是最需要玩家们慎重选择的。&/p&&p&&br&&/p&&p&G镜头,这批镜头可以说是有索尼自身组建的准专业级镜头群和消费级视频镜头群的统称,基本上素质是持平索蔡的(其实我认为G头更好),而且性价比比由蔡司标加持的索蔡头高很多,和索蔡相反的是,G头注重于中长焦段,而且以变焦居多。&br&目前唯一的G广角1224★★&br&28-135电影镜头&br&18-110电影镜头&br&18-105电影镜头&br&(你们没看错真有三支……)&br&70-200 F4★★★&br&90 2.8微距★★(很重,但是画质真的好)&br&70-300&/p&&p&G头特性其实和GM很像,只不过总体规格更低,可以视为降格版的GM以及补充GM目前所缺失的镜头规格,焦内基本上都很锐(除了730),焦外的话除了720和90微都有点二线性,算是五花八门的焦外吧。&/p&&p&&br&&/p&&p&除了以上三大类外还有数量最多,但不属于GM,索蔡或G头的镜头,这些镜头素质良莠不齐,好如新款85 1.8甚至在素质上足以匹敌贵了两倍有余的蔡司85 1.8,但也有比小痰盂和人精贵了两倍多但是素质却差不多的50 1.8,综合来说这批镜头是迎合大部分一般消费者和初学者的,但也不乏几支优秀的精品。&br&比较有代表性且销量较大的:&br&24-240★★&br&85 1.8★★★&br&28-70★&br&16-50★&/p&&p&给镜头预算一万以下的同志们推荐组合:&br&24-240+55 1.8,万金油组&br&.8,超便携万金油组(配合)&br& F4,较好画质的全焦段组&br&35 2.8+85 1.8,人文人像组&br&.8,风光人像组&br&28 2.0+专用广角转换器+55 1.8,风光组(尤其是星空摄影和全景接片)&br&35 1.4单镜,影棚+人文组&br&28 2.0或35 2.8+70200,人像组&/p&&p&带五角星的是综合性能和价格后比较推荐的镜头。&/p&&p&我个人不得不吹爆85 1.8这支镜头,很多方面甚至凌驾于目前公认的85皇者85GM,而价格仅仅是它的三分之一。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-643afbf708f534caf0f7e805a0fc1228_b.jpg& data-rawwidth=&2276& data-rawheight=&1280& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&2276& data-original=&https://pic4.zhimg.com/50/v2-643afbf708f534caf0f7e805a0fc1228_r.jpg&&&/figure&&p&&br&&/p&&p&18/04/01补:&/p&&p&适马爸爸正式发布全系列E口art了,其中14和20是星空党们值得入手的,35art完全可以取代35za那支垃圾,50art、50za、55za的话其实比较难选,还是首推55za吧,如果视频多就选50za,除此外的art都不推荐,索尼的中长定焦异常强势。&/p&
某位答主的回答让人心醉啊……首先G镜头是G镜头,GM是G–Master镜头,索蔡是索蔡,三者并不同,按索尼自己的定位是GM>索蔡和G镜,索蔡和G镜则属于双一流定位。 然后本文只针对E卡口镜头,不包涵A卡口及美能达镜头,也不包括适马MC11为主的副厂镜头及转接环…
&p&女儿出嫁,爸爸一席话听哭全场:能陪伴她一生的人,我希望是你&/p&&p&近日,中国台湾一女子出嫁,平时不太会写字,也没有高学历的爸爸送给了女婿一席话:“&b&第一个抱她的人,是我不是你;第一个亲她的人,是我不是你;第一个爱护她的人,是我不是你;能陪伴她一生的人,我希望是你。如果有一天不爱她了,你不要跟她说,你跟我说,我会给她带回来&/b&…”&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/443840& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/80/v2-68a4e45f8c919f35e3b5120466aec604_b.jpg& data-lens-id=&443840&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/80/v2-68a4e45f8c919f35e3b5120466aec604_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/443840&/span&
&/a&&p&&/p&
女儿出嫁,爸爸一席话听哭全场:能陪伴她一生的人,我希望是你近日,中国台湾一女子出嫁,平时不太会写字,也没有高学历的爸爸送给了女婿一席话:“第一个抱她的人,是我不是你;第一个亲她的人,是我不是你;第一个爱护她的人,是我不是你;能陪伴她一生的…
&h2&Snapseed基础与流程&/h2&&blockquote&Snapseed作为一款极其方便简单的手机图片处理软件,给我在这几年的使用中带来了不少非常不错的体验,并且逐渐摸索出一套自己的套路,在此通过更加系统的文章分享给大家。&/blockquote&&br&&p&在很多专业的图像处理教学中教学者通常会强调流程的重要性,甚至与其说是学习软件的使用方法,不如说是在学习处理、制作的流程,懂得了流程才能让使用者更专业规范的使用一款软件,并且极大程度地提高效率,虽然Snapseed是一款非常容易上手的手机app,但带给大家一套清晰明了的使用流程,往往能让软件的使用更加流畅有思路,并且有利于学习泼辣修图、Lightroom等更加专业的图像处理软件。所以我们首先要清楚一张图像的基本处理流程。对于一张图片的基本处理流程主要就是以上的六大步骤,简单来讲就是先选择自己想要的画面内容,对此作出一些调整并注入自己的风格最后输出的过程。如果涉及到更加高级的图片合成及效果操作将主要在第四步-&b&效果&/b&部分完成,这方面内容将在我的知乎专栏——&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&中以独立文章的形式详细谈及。&/p&&br&&h2& 1.二次构图&/h2&&p&首先我们要决定的是&b&保留哪些画面内容&/b&,而不是对先急于修改画面本身,即通过Snapseed提供的这四个工具来确定自己要保留的画面内容,同时完善构图甚至可以通过展开工具增加额外的画面内容,因此这一步也叫作二次构图。&/p&&figure&&img data-rawheight=&511& src=&https://pic3.zhimg.com/50/v2-c6a43df3a985e827fc404_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic3.zhimg.com/50/v2-c6a43df3a985e827fc404_r.jpg&&&/figure&&p&以下图为例,这是一张以前随手拍到的挺生活化的一幕,为了避免尴尬,我没有机会看取景器,快门也是在行走中按下的,照片很歪斜,要挽救一下这尴尬的构图就得先旋转。(如果你没有一些特殊构图需要,拍照时一定端平相机。如果相机歪了,一定把照片转正,有时候再漂亮的色彩也会被一条稍稍倾斜的地平线毁掉!)&/p&&figure&&img data-rawheight=&958& src=&https://pic2.zhimg.com/50/v2-bf7c47b2244_b.jpg& data-rawwidth=&719& class=&origin_image zh-lightbox-thumb& width=&719& data-original=&https://pic2.zhimg.com/50/v2-bf7c47b2244_r.jpg&&&/figure&&br&&p&Snapseed在某些情况下可以自动拉直图片,当然你也可以通过内置的参考线来手动拉直照片&/p&&br&&blockquote&除此之外旋转选项卡里还有翻转照片的功能,可以通过翻转照片来处理一些对着镜子拍摄的照片中被反转的文字。&/blockquote&&br&&figure&&img data-rawheight=&817& src=&https://pic4.zhimg.com/50/v2-3d48f1095cbe0efaf9cd0ebd_b.jpg& data-rawwidth=&919& class=&origin_image zh-lightbox-thumb& width=&919& data-original=&https://pic4.zhimg.com/50/v2-3d48f1095cbe0efaf9cd0ebd_r.jpg&&&/figure&&br&&p&回到那张照片,它看上去依然不正,好像还是歪的,这时就需要用变形工具,从拍摄视角的层面把照片再修正。&/p&&figure&&img data-rawheight=&816& src=&https://pic1.zhimg.com/50/v2-85ef7b07fab2b4ab7fe1_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic1.zhimg.com/50/v2-85ef7b07fab2b4ab7fe1_r.jpg&&&/figure&&p&现在,我们就要进行最重要的步骤剪裁了,但要注意的是&b&剪裁应该在旋转和变形之后进行&/b&,这样可以避免损失更多画面内容。&/p&&blockquote&剪裁可以实现:&br&1.借助剪裁来去除变形调整中自动填充的内容&br&2.在剪裁的过程中我们可以借助软件提供的三分线进行二次构图&br&3.改变镜头焦距,例如这张图片是用28mm镜头拍摄的,剪裁之后其观感更接近于35mm焦距&br&4.去除画面边缘杂乱物体,例如这张图片左下角的一只脚&/blockquote&&br&&figure&&img data-rawheight=&433& src=&https://pic1.zhimg.com/50/v2-2ab306ac4c0c4c016fe5d3ec_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic1.zhimg.com/50/v2-2ab306ac4c0c4c016fe5d3ec_r.jpg&&&/figure&&br&&p&二次构图部分的流程就是这样:&/p&&figure&&img data-rawheight=&518& src=&https://pic1.zhimg.com/50/v2-6bcdfcff659_b.jpg& data-rawwidth=&645& class=&origin_image zh-lightbox-thumb& width=&645& data-original=&https://pic1.zhimg.com/50/v2-6bcdfcff659_r.jpg&&&/figure&&h2&2.内容矫正&/h2&&p&这一步我们需要将照片调整到一个适合编辑和注入风格的状态,需要用到调整图片、白平衡以及显影(RAW档)工具,调整具体操作如下:&/p&&br&&h2&2.1 曝光调整&/h2&&p&曝光有明显不准则先要校准曝光,该过程可以参考直方图,不要出现明显的过曝、欠曝,直方图的具体理解方法在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&中以独立文章的形式详细谈及。&/p&&figure&&img data-rawheight=&570& src=&https://pic3.zhimg.com/50/v2-a26ec575b9b1bfec1200_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic3.zhimg.com/50/v2-a26ec575b9b1bfec1200_r.jpg&&&/figure&&br&&h2&2.2 白平衡校准&/h2&&p&打开&b&白平衡&/b&工具手动调整&b&色温&/b&来避免明显的偏黄或偏蓝,调整&b&着色&/b&来避免明显的偏品或偏绿,也可以借助工具的自动白平衡工具或吸管工具吸取画面中原本为白色的部分,比如白墙或白纸,如果是JPEG文件最好在前期拍摄时保证准确的白平衡。&/p&&figure&&img data-rawheight=&267& src=&https://pic4.zhimg.com/50/v2-1ed37a3f4cdd6d77d419_b.jpg& data-rawwidth=&841& class=&origin_image zh-lightbox-thumb& width=&841& data-original=&https://pic4.zhimg.com/50/v2-1ed37a3f4cdd6d77d419_r.jpg&&&/figure&&br&&p&在这张图片中我用吸管工具选择了印象中应该是纯白色的护栏,校准了原本色温偏冷的白平衡,但感觉又有一点偏黄,没关系我们继续处理。&/p&&figure&&img data-rawheight=&1038& src=&https://pic2.zhimg.com/50/v2-df7fe88bf3e96b515ea81_b.jpg& data-rawwidth=&507& class=&origin_image zh-lightbox-thumb& width=&507& data-original=&https://pic2.zhimg.com/50/v2-df7fe88bf3e96b515ea81_r.jpg&&&/figure&&br&&h2&2.3其他基本参数调整&/h2&&p&在对图像内容显示的校正上最后回到&b&调整图片&/b&工具,一般可以选择稍微降低一些对比度,并不建议在这一步就提高饱和度,会在后面的调整中局部增加饱和度来获得不错的效果,其他参数大家可以根据自己喜好稍作调整来保证该图片后面涉及到的调整更加顺利。&/p&&br&&blockquote&如果认为图片色彩及其杂乱,表现不佳,可以在这一步完全去除色彩(如下图)。&br&&/blockquote&&figure&&img data-rawheight=&864& src=&https://pic3.zhimg.com/50/v2-5a9c18e4cabdc05b5744ed0_b.jpg& data-rawwidth=&762& class=&origin_image zh-lightbox-thumb& width=&762& data-original=&https://pic3.zhimg.com/50/v2-5a9c18e4cabdc05b5744ed0_r.jpg&&&/figure&&br&&p&回到示例,这是我对该图片做出的调整使它更符合我的观感(该参数调整没有参考价值)&/p&&figure&&img data-rawheight=&545& src=&https://pic1.zhimg.com/50/v2-31ea4f1bf61e2e2faec6fa_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic1.zhimg.com/50/v2-31ea4f1bf61e2e2faec6fa_r.jpg&&&/figure&&br&&p& 内容矫正部分的流程如下图:&/p&&figure&&img data-rawheight=&205& src=&https://pic3.zhimg.com/50/v2-a43aedc2ad7_b.jpg& data-rawwidth=&794& class=&origin_image zh-lightbox-thumb& width=&794& data-original=&https://pic3.zhimg.com/50/v2-a43aedc2ad7_r.jpg&&&/figure&&br&&h2&3.局部调整&/h2&&figure&&img data-rawheight=&511& src=&https://pic4.zhimg.com/50/v2-4edff6ddbdd3_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic4.zhimg.com/50/v2-4edff6ddbdd3_r.jpg&&&/figure&&p&局部调整应该是整个修图环节最为重要的!更是Snapseed的精髓,我认为应该算是“三次构图”,局部调整主要会用到这几个工具以及蒙版,其中&b&修片&/b&和&b&姿态&/b&主要针对人物肖像,&b&画笔&/b&的操作较为繁琐但更加精细,一般除非是局部解决不了的场景我才会用到画笔,这三个工具的操作暂时不做赘述,在这里重点展示&b&局部&/b&工具的使用。&/p&&br&&blockquote&在示例图片中&br&图1:我用到了八个调整点,路面上的四个调整点用于压暗路面以及提升路面质感(降低亮度,提高对比度、饱和度及结构),一个调整点用于压暗色彩并不好看的树并降低其饱和度,人身上的调整点用于提高亮度(提高亮度,增加一点对比度及结构),一般不要对人的皮肤提高饱和度,会使皮肤更黑更红。&br&图2:在单次调整中&b&只允许放置八个调整点&/b&,所以再次选择局部工具,继续将画面中间的路面背景压暗,并再次提亮人物,使其从背景中看起来更突出。&/blockquote&&figure&&img data-rawheight=&413& src=&https://pic1.zhimg.com/50/v2-6be414c9e8a78a83063ea9_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic1.zhimg.com/50/v2-6be414c9e8a78a83063ea9_r.jpg&&&/figure&&br&&p&在用了两次&b&局部&/b&工具之后,画面有了较大的变化,原本不太好的光线环境得到了很好的改善,主体更加凸显。&/p&&figure&&img data-rawheight=&850& src=&https://pic2.zhimg.com/50/v2-66263eab76ac83eeaa31cab122d5e039_b.jpg& data-rawwidth=&645& class=&origin_image zh-lightbox-thumb& width=&645& data-original=&https://pic2.zhimg.com/50/v2-66263eab76ac83eeaa31cab122d5e039_r.jpg&&&/figure&&br&&blockquote&在使用中需要注意放置调整点的时候一定要确保其中心位置在你需要调整的地方,比如调整护栏,就一定把点的中心对准在护栏上,Snapseed会根据你选择的点的颜色和亮度来处理周围与该点相似的部分并子啊缩放控制范围时用红色标出,当然如果调整中心的位置有偏差,处理方式就完全不一样了(如图)。&/blockquote&&figure&&img data-rawheight=&201& src=&https://pic3.zhimg.com/50/v2-2d99919a07bdc27b89bae6c_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/50/v2-2d99919a07bdc27b89bae6c_r.jpg&&&/figure&&br&&h2&蒙版&/h2&&p&蒙版是进阶使用Snapseed最重要的工具,它可以让某个工具的效果区域化,可以产生许多神奇的效果,并且还可以用于细致高级的修图,希望大家能掌握这个神奇的工具。&/p&&p&关于蒙版的具体使用方法及案例在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&里有具体讲解。&/p&&br&&h2&4.效果&/h2&&p&Snapseed中有非常多的滤镜及效果可供选择,在这里列举一些我比较喜欢常用的滤镜和效果。&/p&&br&&p&&b&4.1 晕影&/b&&/p&&p&这是我最常用的效果,喜欢大光圈广角镜头的暗角,虽然源于镜头缺陷,但却使视觉重心再次得到加强,并营造出独特的氛围感,可以在确定视觉中心位置后加上一点轻微的暗角,注意暗角不要太重,以免影响画面内容。&/p&&figure&&img data-rawheight=&414& src=&https://pic4.zhimg.com/50/v2-8cf2877efb08e35bd409e6_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic4.zhimg.com/50/v2-8cf2877efb08e35bd409e6_r.jpg&&&/figure&&br&&h2&&b&4.2 魅力光晕&/b&&/h2&&p&在清晨黄昏等需要增加空气感的场景下,光晕效果可以营造出薄雾冥冥的氛围,最好不要用软件预设(口味太重,调整太强),而是自己确定一个舒适的度。除此之外,不要滥用光晕,让每张照片都感觉有柔光效果,留下明显的后期痕迹。&/p&&figure&&img data-rawheight=&409& src=&https://pic1.zhimg.com/50/v2-38b66edd22c5ec4dd970a329edd61279_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/50/v2-38b66edd22c5ec4dd970a329edd61279_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&400& src=&https://pic1.zhimg.com/50/v2-39b546ed7ee7d20eb3265fad1555463a_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/50/v2-39b546ed7ee7d20eb3265fad1555463a_r.jpg&&&/figure&&br&&h2&&b&4.3 HDR景观&/b&&/h2&&p&该滤镜比较适用于风景照,但同样注意不可直接用预设(还是因为口味太重),而是自己控制量级。&/p&&figure&&img data-rawheight=&400& src=&https://pic4.zhimg.com/50/v2-2e49cfd01c03ddb767aad8e1_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/v2-2e49cfd01c03ddb767aad8e1_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&450& src=&https://pic3.zhimg.com/50/v2-6be1987ecde_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/50/v2-6be1987ecde_r.jpg&&&/figure&&br&&br&&h2&&b&4.4 戏剧效果&/b&&/h2&&p&使用在某些纪实类图片上的效果非常好,对比强烈,同时细节丰富,但色调不太好看(我不太能玩转),推荐使用在黑白照片上。&/p&&figure&&img data-rawheight=&337& src=&https://pic4.zhimg.com/50/v2-3aed3dc00a92df2e961e14_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/v2-3aed3dc00a92df2e961e14_r.jpg&&&/figure&&br&&br&&figure&&img data-rawheight=&600& src=&https://pic2.zhimg.com/50/v2-9a83cbbcb97fc17f0bfc4_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/v2-9a83cbbcb97fc17f0bfc4_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&450& src=&https://pic3.zhimg.com/50/v2-d5e9b0c252eea0bcc6afac_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/50/v2-d5e9b0c252eea0bcc6afac_r.jpg&&&/figure&&br&&h2&&b&4.5 粗粒胶片&/b&&/h2&&p&推荐使用x系的胶片,适度(20~50)添加,色调真的很棒,可以看出Snapseed对其胶片引擎还是很上心的。&/p&&figure&&img data-rawheight=&400& src=&https://pic2.zhimg.com/50/v2-45fecf18886bfbe82cebb4bad29df0fb_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/v2-45fecf18886bfbe82cebb4bad29df0fb_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&417& src=&https://pic4.zhimg.com/50/v2-90aed40fcfac3109baa6e61b5e06fd54_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/v2-90aed40fcfac3109baa6e61b5e06fd54_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&399& src=&https://pic2.zhimg.com/50/v2-a274b66ef3d42f9bfd9c78_b.jpg& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/v2-a274b66ef3d42f9bfd9c78_r.jpg&&&/figure&&br&&p&这个滤镜还可以为图片添加一些颗粒,有时我们处理一张JPEG格式的图片可能会出现色阶撕裂的情况,添加一些颗粒可以抑制这种情况的发生。&/p&&br&&h2&&b&4.6 其他&/b&&/h2&&p&在其他一些滤镜中复古配合斑驳可以获得不错的陈旧感,怀旧的效果也不错,但这些滤镜的参数最好手动调整,尽量不使用预设。双重曝光和文字工具将在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&中以独立文章的形式详细谈及。其他效果不做过多介绍。&/p&&br&&blockquote&回到示例中的照片,我对它使用了晕影和粗粒胶片(X2:强度30/粒度0)两个效果。&/blockquote&&figure&&img data-rawheight=&826& src=&https://pic3.zhimg.com/50/v2-eeb3cddbc4eb82_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic3.zhimg.com/50/v2-eeb3cddbc4eb82_r.jpg&&&/figure&&br&&h2&5. 风格注入&/h2&&p&因为涉及到不少效果或局部调整,可能导致对比过于强烈、过饱和、色温偏移太多等问题,所以我们用调整图片这个工具优化一下效果,最后我们还可以用调整图片和曲线工具来注入或加强自己的个人风格。曲线工具的使用在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&中以独立文章的形式有详细介绍。&/p&&br&&blockquote&在示例图片中只使用了调整图片工具,获得了有更丰富细节和我个人比较喜欢的偏冷色调的感觉。&/blockquote&&figure&&img data-rawheight=&542& src=&https://pic3.zhimg.com/50/v2-17f99ede42bbc8ccfffd62b_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic3.zhimg.com/50/v2-17f99ede42bbc8ccfffd62b_r.jpg&&&/figure&&br&&h2&6.锐化输出&/h2&&h2&6.1 突出细节&/h2&&p&要注意&b&锐化一般是处理一张图片的最后一步&/b&,不用急于在前几步进行锐化,可能会影响图片后面的处理过程,比较适用于人像的局部锐化在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&中以独立文章的形式有详细介绍。。&br&因为拍这张照片时镜头光圈全开,素质并不是很好,成像偏软,可以通过锐化的方式使照片细节更锐利,但注意不要锐化过度,导致画面出现大量噪点杂色,一般锐化加20至40,在这张照片里,不需要太凸显线条,线条越多,结构感越强反而使画面越乱,所以我会降低结构的数值,如果是拍摄建筑,树叶等纹理丰富的物体,则应该增加该数值。&/p&&h2&6.2 导出设置&/h2&&p&最后我们输出这张照片,输出前可以对导出照片的品质和大小做出设置以适应于不同用途。如果要用其他软件继续处理则应该保持原图片大小并输出100%最低压缩率的JPEG,如果只是上传到社交网络可以适当减小照片大小并降低画质来节省存储空间。&/p&&br&&blockquote&1.点击右上角的&b&更多&/b&按钮&br&2.点击&b&设置和详细信息&/b&&br&3.根据需要调整图片大小和画质&/blockquote&&figure&&img data-rawheight=&788& src=&https://pic4.zhimg.com/50/v2-9dc4aab052af5cf249386_b.jpg& data-rawwidth=&886& class=&origin_image zh-lightbox-thumb& width=&886& data-original=&https://pic4.zhimg.com/50/v2-9dc4aab052af5cf249386_r.jpg&&&/figure&&p&最后,我们输出这张照片&/p&&figure&&img data-rawheight=&931& src=&https://pic1.zhimg.com/50/v2-cc89c62d7cc9f78ece8a_b.jpg& data-rawwidth=&700& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic1.zhimg.com/50/v2-cc89c62d7cc9f78ece8a_r.jpg&&&/figure&&p&这张图片本身很一般,但它具有显著的缺点,我们整个流程过后可以感觉到这张图片的变化还是很明显的。&/p&&br&&h2&6.3 保存预设&/h2&&p&我们可以把自己喜欢的修图过程保存成预设,并且在以后的使用中可以套用预设,而且还可以将自己满意的预设分享给他人,非常快捷方便~&/p&&br&&blockquote&1.点击&b&历史&/b&按钮&br&2.选择&b&保存样式&/b&&br&3.为样式命名&br&4.打开一张&b&新图片&/b&重复第一步并选择&b&我的样式&/b&&br&5.可以直接将样式应用到要修改的图片里,也可以点击&b&更多&/b&选项对该样式做更多操作&br&6.如果照片已经进行过一些修改,则可以选择&b&向图片附加样式&/b&&/blockquote&&figure&&img data-rawheight=&737& src=&https://pic3.zhimg.com/50/v2-1c85d3831cec9bbc2d6bdc9adbc36163_b.jpg& data-rawwidth=&1240& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&https://pic3.zhimg.com/50/v2-1c85d3831cec9bbc2d6bdc9adbc36163_r.jpg&&&/figure&&blockquote&我们也可以通过下图的方式将自己满意的样式分享给别人&/blockquote&&figure&&img data-rawwidth=&400& data-rawheight=&355& src=&https://pic3.zhimg.com/50/v2-fbaf30bfd227a1cbb0908e5_b.jpg& class=&content_image& width=&400&&&/figure&&br&在实际套用预设时,Snapseed会把只适用于原图片做出的调整自动删除(剪裁,旋转,局部),但依然保留了当时针对原图片做过的基本调整(图片调整,白平衡),我们可以来到&b&查看修改内容&/b&界面,对前几步重新做出更适合新图片本身的调整。&br&&figure&&img data-rawheight=&902& src=&https://pic3.zhimg.com/50/v2-185fade8cb94e8d0c3a6_b.jpg& data-rawwidth=&1004& class=&origin_image zh-lightbox-thumb& width=&1004& data-original=&https://pic3.zhimg.com/50/v2-185fade8cb94e8d0c3a6_r.jpg&&&/figure&&p&保存过的步骤就又都复制过来了!是不是很爽~满满的套路啊,当然还是要根据这张照片的特点再修一下。&/p&&h2&&b&写在最后&/b&&/h2&&p&在这套修图流程或者叫套路里面,&b&风格注入&/b&和&b&效果&/b&的顺序可以根据个人喜好置换,如果原图问题不大甚至可以直接省略&b&二次构图&/b&和&b&内容矫正&/b&,所以说流程是可以改变的。&/p&&p&总结:&b&先选出自己想要的画面,确定画面视角没问题,再注入个人风格,最好用到Snapseed的精髓工具(局部或画笔)突出画面重心!整个过程保证画面干净。就是这样~&/b&&/p&&br&&p&更多精彩内容,尽在&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&指尖创意&/a&&/p&&p&万事总有个套路&/p&&p&修图也一样&/p&&p&按照套路&/p&&p&点个赞吧!谢谢&/p&
Snapseed基础与流程Snapseed作为一款极其方便简单的手机图片处理软件,给我在这几年的使用中带来了不少非常不错的体验,并且逐渐摸索出一套自己的套路,在此通过更加系统的文章分享给大家。 在很多专业的图像处理教学中教学者通常会强调流程的重要性,甚至…
&figure&&img src=&https://pic4.zhimg.com/50/v2-d6aa0a8ea85a6dc419cee9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&703& data-rawheight=&258& class=&origin_image zh-lightbox-thumb& width=&703& data-original=&https://pic4.zhimg.com/50/v2-d6aa0a8ea85a6dc419cee9_r.jpg&&&/figure&&p&&br&&/p&&p&还记得吗?去年冬天,在国外 AI 圈有个事情闹得很火:知名论坛 Reddit 上忽然出现一个叫 deepfakes 的大神,借助神经网络实现了&b&人脸替换&/b&,让一些好莱坞女星“出演”了 AV。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-840f5bf3a7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&256& class=&content_image& width=&300&&&/figure&&p&&br&&/p&&p&后来根据这个项目又衍生了一个叫 FakeAPP 的桌面应用,可以让&b&尼古拉斯·凯奇&/b&这样的明星随心所欲的“出演”任何电影,当然换成任何人的脸部都可以。我们曾详细分享过这些项目:&/p&&p&&br&&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-d824a56fb36db5dd0eb85c5d3cb7f5e8_180x120.jpg& data-image-width=&1200& data-image-height=&900& class=&internal&&景略集智:大意了!居然有人用AI技术制作假AV!&/a&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-b29562aae69cac8238eba5afb0x120.jpg& data-image-width=&740& data-image-height=&407& class=&internal&&景略集智:AI已经决定了,ta就是未来每一届奥斯卡最佳男主。&/a&&p&&br&&/p&&p&怎么样,是不是被这种换脸的效果惊到了?其实即便是不借助神经网络,我们用 Python 和一些 Python 库也能实现换脸,只不过替换的是静态图像中的人脸,但凭此也足以显示出 Python 的“神秘力量”。&/p&&p&&br&&/p&&p&我们下面就传授一下这门 Python“换脸”大法。&/p&&hr&&p&在本文,我们会介绍如何通过一段简短的 Python 脚本(200行)将一张图片中面部特征自动替换为另外一张图片中的面部特征。也就是实现下面这样的效果:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-642fbd6faa13c8fac8b08d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&965& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&965& data-original=&https://pic1.zhimg.com/50/v2-642fbd6faa13c8fac8b08d_r.jpg&&&/figure&&p&&br&&/p&&p&具体过程分为四个步骤:&/p&&ul&&li&检测面部标志;&/li&&li&旋转、缩放和平移图 2 以适应图 1;&/li&&li&调整图 2 的白平衡以匹配图 1;&/li&&li&将图 2 的特征融合到图 1 中;&/li&&/ul&&p&&br&&/p&&p&本脚本的完整代码地址见文末。&/p&&p&&br&&/p&&h2&&b&使用dlib提取面部标志&/b&&/h2&&p&&br&&/p&&p&本脚本使用 dlib 的 Python bindings 来提取面部标志:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-1c6f65abeb25b3b834b65_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&881& data-rawheight=&462& class=&origin_image zh-lightbox-thumb& width=&881& data-original=&https://pic2.zhimg.com/50/v2-1c6f65abeb25b3b834b65_r.jpg&&&/figure&&p&&br&&/p&&p&dlib 实现了 Vahid Kazemi 和 Josephine Sullivan 所著论文《One Millisecond Face Alignment with an Ensemble of Regression Tree》一文中描述的算法。算法本身非常复杂,但是通过 dlib的接口实现它非常简单:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&n&&PREDICTOR_PATH&/span& &span class=&o&&=&/span& &span class=&s&&&/home/matt/dlib-18.16/shape_predictor_68_face_landmarks.dat&&/span&
&span class=&n&&detector&/span& &span class=&o&&=&/span& &span class=&n&&dlib&/span&&span class=&o&&.&/span&&span class=&n&&get_frontal_face_detector&/span&&span class=&p&&()&/span&
&span class=&n&&predictor&/span& &span class=&o&&=&/span& &span class=&n&&dlib&/span&&span class=&o&&.&/span&&span class=&n&&shape_predictor&/span&&span class=&p&&(&/span&&span class=&n&&PREDICTOR_PATH&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&get_landmarks&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&):&/span&
&span class=&n&&rects&/span& &span class=&o&&=&/span& &span class=&n&&detector&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&rects&/span&&span class=&p&&)&/span& &span class=&o&&&&/span& &span class=&mi&&1&/span&&span class=&p&&:&/span&
&span class=&k&&raise&/span& &span class=&n&&TooManyFaces&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&rects&/span&&span class=&p&&)&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&k&&raise&/span& &span class=&n&&NoFaces&/span&
&span class=&k&&return&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&matrix&/span&&span class=&p&&([[&/span&&span class=&n&&p&/span&&span class=&o&&.&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&p&/span&&span class=&o&&.&/span&&span class=&n&&y&/span&&span class=&p&&]&/span& &span class=&k&&for&/span& &span class=&n&&p&/span& &span class=&ow&&in&/span& &span class=&n&&predictor&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&rects&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span&&span class=&o&&.&/span&&span class=&n&&parts&/span&&span class=&p&&()])&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&get_landmarks() 函数 以 numpy 数组的形式接收图像,并返回一个 68x2 的元素矩阵。矩阵的每一行与输入图像中特定特征点的 x,y 坐标相对应。&/p&&p&&br&&/p&&p&特征提取器(predictor)需要一个大概的边界框作为算法的输入。这将由传统的面部检测器(detector)提供。该面部检测器会返回一个矩形列表,其中每一个矩形与图像中的一张人脸相对应。&/p&&p&&br&&/p&&p&生成 predictor 需要预先训练好的模型。该模型可在 dlib sourceforge repository 下载。&/p&&p&&a href=&//link.zhihu.com/?target=https%3A//sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2/download& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&sourceforge.net/project&/span&&span class=&invisible&&s/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2/download&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&h2&&b&用普氏分析法(Procrustes Analysis)实现人脸对齐&/b&&/h2&&p&&br&&/p&&p&现在我们已经有两个面部标志矩阵,其中的每一行都含有某个面部特征的坐标(如第 30 行给出了鼻尖的坐标)。我们现在只要弄明白如何旋转、平移和缩放第一个向量的所有点,使其尽可能匹配第二个向量中的点。同理,同样的变换可用于将第二张图叠加在第一张图上。&/p&&p&&br&&/p&&p&为使其更加数学化,我们设 T,s 和 R,并求如下等式最小值:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-d6bc28d791bd944a665eba1f71935bf3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&276& data-rawheight=&94& class=&content_image& width=&276&&&/figure&&p&其中,R 是一个 2x2 的正交矩阵,s 是一个标量,T 是一个二维向量,pi 和 qi 是之前计算出的面部标志矩阵行标和列标。&/p&&p&&br&&/p&&p&事实证明,这类问题用常规普氏分析法(Ordinary Procrustes Analysis)可以解决:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&transformation_from_points&/span&&span class=&p&&(&/span&&span class=&n&&points1&/span&&span class=&p&&,&/span& &span class=&n&&points2&/span&&span class=&p&&):&/span&
&span class=&n&&points1&/span& &span class=&o&&=&/span& &span class=&n&&points1&/span&&span class=&o&&.&/span&&span class=&n&&astype&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&)&/span&
&span class=&n&&points2&/span& &span class=&o&&=&/span& &span class=&n&&points2&/span&&span class=&o&&.&/span&&span class=&n&&astype&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&)&/span&
&span class=&n&&c1&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&mean&/span&&span class=&p&&(&/span&&span class=&n&&points1&/span&&span class=&p&&,&/span& &span class=&n&&axis&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&c2&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&mean&/span&&span class=&p&&(&/span&&span class=&n&&points2&/span&&span class=&p&&,&/span& &span class=&n&&axis&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&points1&/span& &span class=&o&&-=&/span& &span class=&n&&c1&/span&
&span class=&n&&points2&/span& &span class=&o&&-=&/span& &span class=&n&&c2&/span&
&span class=&n&&s1&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&std&/span&&span class=&p&&(&/span&&span class=&n&&points1&/span&&span class=&p&&)&/span&
&span class=&n&&s2&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&std&/span&&span class=&p&&(&/span&&span class=&n&&points2&/span&&span class=&p&&)&/span&
&span class=&n&&points1&/span& &span class=&o&&/=&/span& &span class=&n&&s1&/span&
&span class=&n&&points2&/span& &span class=&o&&/=&/span& &span class=&n&&s2&/span&
&span class=&n&&U&/span&&span class=&p&&,&/span& &span class=&n&&S&/span&&span class=&p&&,&/span& &span class=&n&&Vt&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&linalg&/span&&span class=&o&&.&/span&&span class=&n&&svd&/span&&span class=&p&&(&/span&&span class=&n&&points1&/span&&span class=&o&&.&/span&&span class=&n&&T&/span& &span class=&o&&*&/span& &span class=&n&&points2&/span&&span class=&p&&)&/span&
&span class=&n&&R&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&U&/span& &span class=&o&&*&/span& &span class=&n&&Vt&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&T&/span&
&span class=&k&&return&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&vstack&/span&&span class=&p&&([&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&hstack&/span&&span class=&p&&(((&/span&&span class=&n&&s2&/span& &span class=&o&&/&/span& &span class=&n&&s1&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&n&&R&/span&&span class=&p&&,&/span&
&span class=&n&&c2&/span&&span class=&o&&.&/span&&span class=&n&&T&/span& &span class=&o&&-&/span& &span class=&p&&(&/span&&span class=&n&&s2&/span& &span class=&o&&/&/span& &span class=&n&&s1&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&n&&R&/span& &span class=&o&&*&/span& &span class=&n&&c1&/span&&span class=&o&&.&/span&&span class=&n&&T&/span&&span class=&p&&)),&/span&
&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&matrix&/span&&span class=&p&&([&/span&&span class=&mf&&0.&/span&&span class=&p&&,&/span& &span class=&mf&&0.&/span&&span class=&p&&,&/span& &span class=&mf&&1.&/span&&span class=&p&&])])&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&我们逐步分析一下代码:&/p&&ol&&li&将输入矩阵转换为浮点型。这也是后续步骤的必要条件。&/li&&li&将每一个点集减去它的矩心。一旦为这两个新的点集找到了一个最佳的缩放和旋转方法,这两个矩心c1和c2就可以用来找到完整的解决方案。&/li&&li&同样,将每一个点集除以它的标准偏差。这消除了缩放偏差。&/li&&li&使用奇异值分解(singular value decomposition)计算旋转部分。请参阅维基百科有关Orthogonal Procrustes Problem的文章,以了解它的具体工作原理。&/li&&li&将整个变换过程以仿射变换矩阵形式返回。&/li&&/ol&&p&&br&&/p&&p&之后,返回结果可以插入 OpenCV 的 cv2.warpAffine 函数,将第二个图片映射到第一个图片上:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&warp_im&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&M&/span&&span class=&p&&,&/span& &span class=&n&&dshape&/span&&span class=&p&&):&/span&
&span class=&n&&output_im&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&zeros&/span&&span class=&p&&(&/span&&span class=&n&&dshape&/span&&span class=&p&&,&/span& &span class=&n&&dtype&/span&&span class=&o&&=&/span&&span class=&n&&im&/span&&span class=&o&&.&/span&&span class=&n&&dtype&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&warpAffine&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span&
&span class=&n&&M&/span&&span class=&p&&[:&/span&&span class=&mi&&2&/span&&span class=&p&&],&/span&
&span class=&p&&(&/span&&span class=&n&&dshape&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span& &span class=&n&&dshape&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]),&/span&
&span class=&n&&dst&/span&&span class=&o&&=&/span&&span class=&n&&output_im&/span&&span class=&p&&,&/span&
&span class=&n&&borderMode&/span&&span class=&o&&=&/span&&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&BORDER_TRANSPARENT&/span&&span class=&p&&,&/span&
&span class=&n&&flags&/span&&span class=&o&&=&/span&&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&WARP_INVERSE_MAP&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&output_im&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&&b&校正第二张图片的颜色&/b&&/h2&&p&&br&&/p&&p&如果此时我们试图直接叠加面部特征,很快会发现一个问题:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-c7edb13a94abfb9a4c14b6_b.jpg& data-size=&normal& data-rawwidth=&742& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&https://pic3.zhimg.com/50/v2-c7edb13a94abfb9a4c14b6_r.jpg&&&figcaption&这样肯定是没法儿看的...&/figcaption&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/v2-ccb414c53518a4cbbc20b2c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&225& data-rawheight=&224& class=&content_image& width=&225&&&/figure&&p&两幅图像之间不同的&b&肤色&/b&和&b&光线&/b&造成了覆盖区域边缘的不连续。所以我们尝试修正它:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&n&&COLOUR_CORRECT_BLUR_FRAC&/span& &span class=&o&&=&/span& &span class=&mf&&0.6&/span&
&span class=&n&&LEFT_EYE_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&42&/span&&span class=&p&&,&/span& &span class=&mi&&48&/span&&span class=&p&&))&/span&
&span class=&n&&RIGHT_EYE_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&36&/span&&span class=&p&&,&/span& &span class=&mi&&42&/span&&span class=&p&&))&/span&
&span class=&k&&def&/span& &span class=&nf&&correct_colours&/span&&span class=&p&&(&/span&&span class=&n&&im1&/span&&span class=&p&&,&/span& &span class=&n&&im2&/span&&span class=&p&&,&/span& &span class=&n&&landmarks1&/span&&span class=&p&&):&/span&
&span class=&n&&blur_amount&/span& &span class=&o&&=&/span& &span class=&n&&COLOUR_CORRECT_BLUR_FRAC&/span& &span class=&o&&*&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&linalg&/span&&span class=&o&&.&/span&&span class=&n&&norm&/span&&span class=&p&&(&/span&
&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&mean&/span&&span class=&p&&(&/span&&span class=&n&&landmarks1&/span&&span class=&p&&[&/span&&span class=&n&&LEFT_EYE_POINTS&/span&&span class=&p&&],&/span& &span class=&n&&axis&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span& &span class=&o&&-&/span&
&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&mean&/span&&span class=&p&&(&/span&&span class=&n&&landmarks1&/span&&span class=&p&&[&/span&&span class=&n&&RIGHT_EYE_POINTS&/span&&span class=&p&&],&/span& &span class=&n&&axis&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&))&/span&
&span class=&n&&blur_amount&/span& &span class=&o&&=&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&blur_amount&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&n&&blur_amount&/span& &span class=&o&&%&/span& &span class=&mi&&2&/span& &span class=&o&&==&/span& &span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&n&&blur_amount&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&n&&im1_blur&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&GaussianBlur&/span&&span class=&p&&(&/span&&span class=&n&&im1&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&blur_amount&/span&&span class=&p&&,&/span& &span class=&n&&blur_amount&/span&&span class=&p&&),&/span& &span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&im2_blur&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&GaussianBlur&/span&&span class=&p&&(&/span&&span class=&n&&im2&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&blur_amount&/span&&span class=&p&&,&/span& &span class=&n&&blur_amount&/span&&span class=&p&&),&/span& &span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&c&&# Avoid divide-by-zero errors.&/span&
&span class=&n&&im2_blur&/span& &span class=&o&&+=&/span& &span class=&mi&&128&/span& &span class=&o&&*&/span& &span class=&p&&(&/span&&span class=&n&&im2_blur&/span& &span class=&o&&&=&/span& &span class=&mf&&1.0&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&p&&(&/span&&span class=&n&&im2&/span&&span class=&o&&.&/span&&span class=&n&&astype&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&n&&im1_blur&/span&&span class=&o&&.&/span&&span class=&n&&astype&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&)&/span& &span class=&o&&/&/span&
&span class=&n&&im2_blur&/span&&span class=&o&&.&/span&&span class=&n&&astype&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&))&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&现在效果怎么样?我们瞅瞅:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-ee7f26f3d07a91ed4ac369_b.jpg& data-size=&normal& data-rawwidth=&742& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&https://pic2.zhimg.com/50/v2-ee7f26f3d07a91ed4ac369_r.jpg&&&figcaption&这不是更奇怪了么...&/figcaption&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/v2-2ebdaa3dd9f10ffd76bc3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&150& data-rawheight=&150& class=&content_image& width=&150&&&/figure&&p&此函数试图改变图 2 的颜色来匹配图 1,也就是用 im2 除以 im2 的高斯模糊,然后乘以 im1 的高斯模糊。在这里我们使用了颜色平衡( RGB scaling colour-correction),但不是直接使用全图的常数比例因子,而是采用每个像素的局部比例因子。&/p&&p&&br&&/p&&p&通过这种方法也只能在某种程度上修正两图间的光线差异。比如说,如果图 1 的光线来自某一边,但图 2 的光线非常均匀,校色后图 2 也会出现有一边暗一些的情况。&/p&&p&&br&&/p&&p&也就是说,&b&这是一个相当粗糙的解决方案&/b&,而且关键在于大小适当的高斯内核。如果太小,图 2 中会出现图 1 的面部特征。如果太大,内核会跑到被像素覆盖的面部区域之外,并变色。这里的内核大小为瞳距的 0.6 倍。&/p&&p&&br&&/p&&h2&&b&将图 2 的特征融合到图 1 中&/b&&/h2&&p&&br&&/p&&p&用一个蒙版(mask)来选择图 2 和图 1 应被最终显示的部分:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-e22c43f4de97cf481d4d553_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&742& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&https://pic4.zhimg.com/50/v2-e22c43f4de97cf481d4d553_r.jpg&&&/figure&&p&&br&&/p&&p&值为 1 (白色)的地方为图 2 应显示的区域,值为 0 (黑色)的地方为图 1 应显示的区域。值在 0 和 1 之间的地方为图 1 图 2 的混合区域。&/p&&p&&br&&/p&&p&这是生成上述内容的代码:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&n&&LEFT_EYE_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&42&/span&&span class=&p&&,&/span& &span class=&mi&&48&/span&&span class=&p&&))&/span&
&span class=&n&&RIGHT_EYE_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&36&/span&&span class=&p&&,&/span& &span class=&mi&&42&/span&&span class=&p&&))&/span&
&span class=&n&&LEFT_BROW_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&22&/span&&span class=&p&&,&/span& &span class=&mi&&27&/span&&span class=&p&&))&/span&
&span class=&n&&RIGHT_BROW_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&17&/span&&span class=&p&&,&/span& &span class=&mi&&22&/span&&span class=&p&&))&/span&
&span class=&n&&NOSE_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&27&/span&&span class=&p&&,&/span& &span class=&mi&&35&/span&&span class=&p&&))&/span&
&span class=&n&&MOUTH_POINTS&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&48&/span&&span class=&p&&,&/span& &span class=&mi&&61&/span&&span class=&p&&))&/span&
&span class=&n&&OVERLAY_POINTS&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&
&span class=&n&&LEFT_EYE_POINTS&/span& &span class=&o&&+&/span& &span class=&n&&RIGHT_EYE_POINTS&/span& &span class=&o&&+&/span& &span class=&n&&LEFT_BROW_POINTS&/span& &span class=&o&&+&/span& &span class=&n&&RIGHT_BROW_POINTS&/span&&span class=&p&&,&/span&
&span class=&n&&NOSE_POINTS&/span& &span class=&o&&+&/span& &span class=&n&&MOUTH_POINTS&/span&&span class=&p&&,&/span&
&span class=&p&&]&/span&
&span class=&n&&FEATHER_AMOUNT&/span& &span class=&o&&=&/span& &span class=&mi&&11&/span&
&span class=&k&&def&/span& &span class=&nf&&draw_convex_hull&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&points&/span&&span class=&p&&,&/span& &span class=&n&&color&/span&&span class=&p&&):&/span&
&span class=&n&&points&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&convexHull&/span&&span class=&p&&(&/span&&span class=&n&&points&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&fillConvexPoly&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&points&/span&&span class=&p&&,&/span& &span class=&n&&color&/span&&span class=&o&&=&/span&&span class=&n&&color&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&get_face_mask&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&landmarks&/span&&span class=&p&&):&/span&
&span class=&n&&im&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&zeros&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&[:&/span&&span class=&mi&&2&/span&&span class=&p&&],&/span& &span class=&n&&dtype&/span&&span class=&o&&=&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&float64&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&group&/span& &span class=&ow&&in&/span& &span class=&n&&OVERLAY_POINTS&/span&&span class=&p&&:&/span&
&span class=&n&&draw_convex_hull&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span&
&span class=&n&&landmarks&/span&&span class=&p&&[&/span&&span class=&n&&group&/span&&span class=&p&&],&/span&
&span class=&n&&color&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&im&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&array&/span&&span class=&p&&([&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&n&&im&/span&&span class=&p&&])&/span&&span class=&o&&.&/span&&span class=&n&&transpose&/span&&span class=&p&&((&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&))&/span&
&span class=&n&&im&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&GaussianBlur&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&FEATHER_AMOUNT&/span&&span class=&p&&,&/span& &span class=&n&&FEATHER_AMOUNT&/span&&span class=&p&&),&/span& &span class=&mi&&0&/span&&span class=&p&&)&/span& &span class=&o&&&&/span& &span class=&mi&&0&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&mf&&1.0&/span&
&span class=&n&&im&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&GaussianBlur&/span&&span class=&p&&(&/span&&span class=&n&&im&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&FEATHER_AMOUNT&/span&&span class=&p&&,&/span& &span class=&n&&FEATHER_AMOUNT&/span&&span class=&p&&),&/span& &span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&im&/span&
&span class=&n&&mask&/span& &span class=&o&&=&/span& &span class=&n&&get_face_mask&/span&&span class=&p&&(&/span&&span class=&n&&im2&/span&&span class=&p&&,&/span& &span class=&n&&landmarks2&/span&&span class=&p&&)&/span&
&span class=&n&&warped_mask&/span& &span class=&o&&=&/span& &span class=&n&&warp_im&/span&&span class=&p&&(&/span&&span class=&n&&mask&/span&&span class=&p&&,&/span& &span class=&n&&M&/span&&span class=&p&&,&/span& &span class=&n&&im1&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&n&&combined_mask&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&max&/span&&span class=&p&&([&/span&&span class=&n&&get_face_mask&/span&&span class=&p&&(&/span&&span class=&n&&im1&/span&&span class=&p&&,&/span& &span class=&n&&landmarks1&/span&&span class=&p&&),&/span& &span class=&n&&warped_mask&/span&&span class=&p&&],&/span&
&span class=&n&&axis&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&我们来分析一下:&/p&&ul&&li&常规的 get_face_mask() 函数定义是:为一张图像和一个标志矩阵生成一个蒙版。蒙版会画出两个白色的凸多边形:一个是眼睛周围的区域,一个是鼻子和嘴部周围的区域。之后,蒙版的边缘区域向外羽化 11 个像素,这可以帮助消除剩下的不连续部分。&/li&&li&为图 1 图 2 生成面部蒙版。使用与步骤 2 中的转换,可以使图 2 的蒙版转换至图 1 的坐标空间。&/li&&li&之后,对所有元素取最大值操作,将这两个蒙版合二为一。这样做是为了保证图 1 的特征也能被覆盖的同时图 2 特征能显示出来。&/li&&/ul&&p&&br&&/p&&p&最后,将蒙版应用于最终图像:&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&n&&output_im&/span& &span class=&o&&=&/span& &span class=&n&&im1&/span& &span class=&o&&*&/span& &span class=&p&&(&/span&&span class=&mf&&1.0&/span& &span class=&o&&-&/span& &span class=&n&&combined_mask&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&n&&warped_corrected_im2&/span& &span class=&o&&*&/span& &span class=&n&&combined_mask&/span&
&/code&&/pre&&/div&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-11110dbafd64116e1dae5d5c09d689e4_b.jpg& data-size=&normal& data-rawwidth=&742& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&https://pic2.zhimg.com/50/v2-11110dbafd64116e1dae5d5c09d689e4_r.jpg&&&figcaption&哈,换脸成功!&/figcaption&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/v2-fedcd9be2f3f728dc3d1ccb8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&119& data-rawheight=&129& class=&content_image& width=&119&&&/figure&&p&&b&附:本项目代码地址:&/b&&/p&&p&&a href=&//link.zhihu.com/?target=https%3A//github.com/matthewearl/faceswap/blob/master/faceswap.py& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/matthewearl/&/span&&span class=&invisible&&faceswap/blob/master/faceswap.py&/span&&span class=&ellipsis&&&/span&&/a&&/p&&hr&&blockquote&&b&&i&参考资料:&/i&&/b& &b&&i&&a href=&//link.zhihu.com/?target=https%3A//matthewearl.github.io//switching-eds-with-python/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&matthewearl.github.io/2&/span&&span class=&invisible&&015/07/28/switching-eds-with-python/&/span&&span class=&ellipsis&&&/span&&/a&&/i&&/b&&/blockquote&&figure&&img src=&https://pic2.zhimg.com/50/v2-6f15913b6fabb96ba6b37b309a371754_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&514& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/v2-6f15913b6fabb96ba6b37b309a371754_r.jpg&&&/figure&
还记得吗?去年冬天,在国外 AI 圈有个事情闹得很火:知名论坛 Reddit 上忽然出现一个叫 deepfakes 的大神,借助神经网络实现了人脸替换,让一些好莱坞女星“出演”了 AV。 后来根据这个项目又衍生了一个叫 FakeAPP 的桌面应用,可以让尼古拉斯·凯奇这样的…
&p&不是开玩笑,他的命运,随时可能发生在你我身上。&/p&&p&&br&&/p&&p&某些人估计连报道的全文都没看过,一看到“清华”“生物专业”“保安”这几个词就开始嘲讽。去搜一下新闻就可以知道,他的大致履历如下:&/p&&p&&br&&/p&&p&1、清华生物专业毕业后进入广州一家大型企业。&/p&&p&&br&&/p&&p&2、未能进入研发部,被分配到客服部,工作不太顺利。&/p&&p&&br&&/p&&p&3、因父亲生病瘫痪,回长沙。&/p&&p&&br&&/p&&p&4、进入房地产公司工作,估计也并不顺利。&/p&&p&&br&&/p&&p&5、开始当保安。&/p&&p&&br&&/p&&p&6、目前担任某市场物管客户部主任,工作认真负责。&/p&&p&&br&&/p&&p&工作和专业不对口、父母生病、职场危机、逃离北上广、人到中年、在老家找不到合适工作——这些不都是我们每个人都很可能遇到的问题吗?&/p&&p&&br&&/p&&p&不久前华为辞退老员工的事情还历历在目,谁能保证你今天还在好好上班明天不会被通知卷铺盖回家?风口很多,被风吹走的更多,一大波即将死去的企业就在路上。&/p&&p&&br&&/p&&p&在大城市有房有车又怎么样,一旦遇到收入不稳定甚至失业断供,银行随时把你的房子收回去,回老家不是开玩笑,三四十岁没有任何家庭背景的普通人,回去不想当保安,你又能做什么高大上的工作呢?&/p&&p&&br&&/p&&p&就算你事业稳定无可替代,还是在金融IT这样的高收入行业,且不说这样的工作有多苦逼,谁又能保证自己不生病、父母不生病?“流感下的北京中年”那篇文章,都还没忘吧?别以为一年挣个几十万就牛逼哄哄了,一场病随时能把美好生活打得粉碎。&/p&&p&&br&&/p&&p&所以没什么好嘲笑的,不管是清华还是北大,不管是生物还是金融,在时代和命运的洪流面前,都是很脆弱无力的。 &/p&&p&&br&&/p&&p&其实这位老哥,已经在竭尽全力的面对和反抗命运了。至少他仍然在兢兢业业工作,至少他还可以经常陪伴在家人身边,就凭这两点,就已经比很多留在北上广混吃等死的人强多了。&/p&&p&&br&&/p&&p&&b&其他相关回答:&/b&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&2017 年最令你震惊、悚然的数据是什么?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&如何评价电影《无问西东》?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&年收入 100 万在目前中国属于什么水平?&/a& &/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&如何评价郑州女老师10字辞职信:“世界那么大,我想去看看.”?&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&高考失利,人生未来还可以翻盘吗?&/a&&/p&&p&&br&&/p&&p&(以上内容同时发布于个人微信公众号“直说”,如需转载请注明作者)&/p&
不是开玩笑,他的命运,随时可能发生在你我身上。 某些人估计连报道的全文都没看过,一看到“清华”“生物专业”“保安”这几个词就开始嘲讽。去搜一下新闻就可以知道,他的大致履历如下: 1、清华生物专业毕业后进入广州一家大型企业。 2、未能进入研发部…
&p&更新:&/p&&p&没想到这个回答被推送了,幸亏我当初匿名了,好吓人。为了不影响阅读体验,更新内容放在文末,已关注问题的朋友请滑到底看更新内容。&/p&&p&———————以下是回答———————&/p&&p&大概是我第一次非常认真的想在知乎上回答一个问题吧。首先一句话概括就是,千万不要闪婚,真的。&/p&&p&还是先介绍一下背景吧。认识我老婆的时候,我28岁,工作8年,对你没看错,我20岁大学就毕业了,因为由于我父亲是老师的缘故,在农村一个老师是带一个班的,我5岁那年正好他把上一个班带毕业从头开始带小学一年级,所以我没有上幼儿园就直接到了我爸的班上读一年级,当时我妈觉得我还是有点小,我爸就说让我跟着读一下试试看吧,结果还真行,从小就稳不掉链子,然后小学五年级还跳了一级,直接读了六年级,所以年纪比同}

我要回帖

更多关于 微信求点赞的好文案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信