请推荐一个靠谱的文案团队介绍创意文案,分布在北上广深、或者互联网公司的,像刑天营销那样的?

SWOM:搜索信息完善
SEM:付费推广托管
SEO整站优化
营销投放方案制定
微信微博大KOL
品牌口碑维护
正面信息推广
H5网站跨屏、跨平台
播放多媒体元素
与移动应用无缝连接
最佳的用户体验
刑天营销是一家网络营销服务提供商,公司成立于2011年,总部位于上海,在合肥有分公司。
公司从搜索引擎优化服务起家,现业务范围已经拓展到:
搜索引擎营销(SEO&PPC);
社会化媒体营销(Social);
互联网环境优化(SMO);
品牌口碑与舆情(ePR);
移动网站建设与优化(H5)
我们的客户
Copyright&2017 刑天营销&&|&&&|&&&211被浏览26,756分享邀请回答103 条评论分享收藏感谢收起4813 条评论分享收藏感谢收起您的位置:
分析了100篇文案痛点发现:99%不是真痛!
来源:七桥沙漏
作者:小沙
近期搜集了一些关于文案的文章,以「洞察用户痛点」为主题的文章非常多,而且看起来段位都比其他类型的文章要高一些,通常会涉及到心理学、社会学,比如说:
5个“戳到你痛”的网络文案,你会痛到尖叫吗?
新产品文案如何唤起痛点?
请不起调研机构,如何洞察用户痛点?
客户的那些“心痛点”,你挠到了吗?
找痛点秘籍:像脑残一样思考!
于是,练洞察,戳痛点成为文案必练手段,希望凭借《如何提高你的洞察力》《洞察人心的18种方法》提高自己洞察痛点的能力。
可是十八般武艺后,尽管潜心修炼,可惜还是无法百步穿杨,一击必中。
因为戳痛点是个艺术活儿,需要阅历和生活的沉淀。在美国,资深文案通常会有7-25年从业经验,而中国,资深文案通常只有3-5年的从业经验。年龄是次要的,年龄给予的阅历与思考才是文案手中最有力的钢笔。
现在,大部分的文案所知的痛点都来自于书本、文章、报告,而非切身体会或者对生活的观察。可惜,看再多的书、读再多的文章、阅再多的报告对痛点的理解都只能流于表面。这时候,把别人观察到的独一无二的痛点拿到自己产品上用通常就会失效,那么伪痛点就产生了。
一、痛完之后,没有转化
评判一个好的文案,经常听到这样的形容词。
消费者是白领,呼吁他们放松心身,去享受生活。于是写——【你见过这个城市凌晨4点,那你见过梅里雪山的凌晨4点吗?××旅行社,带你看每个城市的凌晨。】
一个在凌晨4点回家的代码狗,看到这句话感动得泪流满面。
消费者是家庭妇女,呼吁她们爱家庭也要爱自己。于是写——【你未嫁时绝代风华,出嫁后油盐酱醋,××化妆品,好好爱自己。】
一个30出头的家庭妇女,在菜场买菜被人叫大婶儿,看到这句话百感交集。
消费者是商务型男人,呼吁他们放下应酬,回归家庭。于是写——【儿子问妈妈,爸爸是蝙蝠侠吗,为什么只有在我睡着的时候他才回来。××手工坊,和孩子一起做饼干。】
一个年近40创业人应酬完客户,扶墙吐酒的时候看到这句话失声痛哭。
这文案写的好吗?写的好!写出了每个群体的内心话,戳中了每个群体的痛点,有共鸣啊,我都感动坏了。
可是,这跟你们产品有关系吗?加班累可以睡觉、找朋友谈心,为什么一定是旅行?好好爱自己可以买漂亮衣服、和老公来个蜜月旅行,为什么一定是买化妆品?陪伴孩子可以是给儿子讲睡前故事、陪儿子去游乐园,为什么一定是做饼干?
上述痛点其实都属于伪痛点——痛点和产品无关,痛完之后没有转化。这些伪痛点都有两个重要的特征:1是覆盖人群广泛,比如北上广白领、家庭妇女、35岁左右的成功男士等。2是匹配度高,可以和不同行业、不同产品相结合,看似有共鸣,其实在自嗨。
把社会某种群体的痛点当成产品消费群体的痛点是很多文案都喜欢犯的错误,在自己没有高段位品牌的资源、调性、号召力等庞大的背景条件下东施效颦,导致消费者和产品脱节,宣传文案塑造出来的形象坑太大,产品无法填满。
文案在寻找痛点之前首先得思考: 这个痛点跟你产品有什么关系?群体痛点和产品交集的部分是什么?
二、怎样痛才能回味无穷
很多文章都在强调,写文案不能将消费者目光锁定在产品身上,要跳出“文案人”的视角,站在用户角度。可惜,他们都没告诉你该怎么跳。
文案一旦运功太过,跳的太远,远离产品,伪痛点就产生了。伪痛点通常有一张迷惑人心的外表,就是让文案误以为消费群体的痛点就是产品的痛点,痛过之后没有下一步的动作。
那怎样才能让戳到的痛点更持久,更回味无穷?
1、细化人群
首先普及一下消费者和消费群体的区别。消费者指实实在在的人,有个性,有情绪,能和企业交流。消费群体是一个集合概念,千千万万的消费者组成一个消费群体,他们只是有某种共性在里面。
一个95后上班族既属于「95后人群」又属于「中国上班人群」,属于不同的群体,有不同的特质,但他是消费者,他的特性是复杂的。
大部分人都喜欢研究消费群体,研究社会学、心理学,希望用人性弱点、人性优点来够洞悉某种类型的消费群体。但是大部分文案都没有办法达到运用消费群体痛点的这个高段位。消费群体痛点过于大而泛,很难抓住其精髓。
细分消费群体是寻找真痛点的首要步骤。只有彻底了解你的消费者是怎样的特性才能写出具有针对性的文案。
比如说产品是日系高档陶瓷餐具,我们来一步步进行人群细分。
原始人群:北上广女性白领
痛点:工作压力大,身心疲惫
文案:抽离城市繁忙,让瓷器陪你停下来
第一步细分人群:北上广25岁左右有消费能力女性白领
痛点:希望自己有高质量的生活
文案:偶尔小资,对得起自己努力工作
第二部细分人群:北上广25岁左右有消费能力文艺女性白领
痛点:希望释放自己与众不同的气质
文案:器皿是生活的艺术,给你自然、淳朴的享受
很显然,人群每细分一次,痛点就会随之改变。消费者越是细分,用户画像越是清晰。写文案的时候,就像在与真实的消费者在对话,痛点越趋向于消费者的真实内心。
找准产品目标人群,透彻理解目标人群的特征是一件费力费时的事情。用户角色模型(Persona)是构建用户画像(构建用户画像文章参考「七桥沙漏」历史文章《不懂用户?1招让你了解他》)的一种常用模式。聚焦到3-5个典型消费者身上,用标签分析其需求和偏好,把痛点聚焦到一点。
2、亲密接触消费者
亲密接触消费者是寻找真痛点最直接、有效的一种方式。我们更加关注的是消费者怎样看待产品、使用产品、评价产品以及怎样和品牌进行互动。
这就需要比消费者了解自己还要了解他们。仔细观察产品和消费者之间的微弱关系,再从产品出发,分析消费者的深层动机。
比如你家产品是耳机,就需要像一个耳机发烧友一样去了解他们的世界,和他们聊天,和他们成为哥们儿,甚至和他们融为一体,而不是整天意淫他们这群人的心理。
聚焦自己的用户类型:是初次玩耳机的人还是说对HIFI有一定概念,还是中高端的发烧友。
聚焦他们关注的点:声音还原的冷、暖、柔和、刚猛等风格特点,对细节的还原、低频的控制力、声场/定位的表现等。
聚焦他们的弱点:买耳机是为了享受音乐还是热衷于电子产品,还是本身就是音乐界的人。
伪痛点和真痛点的区别不在于自己的人生阅历和人性洞察是否足够,而是要踏踏实实和消费者沟通,与消费者融为一体,真正去了解他们。很多文案大师都是在与消费者面对面,一对一沟通中捕捉到的真实痛点。
(转载请保留)
您刚刚看过
互联网的一些事,已超50万小伙伴关注!4小时后逃离北上广,一场策划与心机营销的自嗨 : 经理人分享
4小时后逃离北上广,一场策划与心机营销的自嗨
7月8日早上在上班路上被新世相的一条微信刷屏了《我买好了30张机票在机场等你:4小时后逃离北上广》,我的朋友圈有超过30个人转发这条微博。新世相这么来定义这场活动:今天,我要做一件事:就是现在,我准备好了机票,只要你来,就让你走。现在是早上 8 点,从现在开始倒计时,只要你在 4 小时内赶到北京、上海、广州 3 个城市的机场,我准备了 30 张往返机票,马上起飞,去一个未知但美好的目的地。现在你也许正在地铁上、出租车上、办公室里、杂乱的卧室中。你会问:我可以吗?——瞬间决定的事,才是真的自己。”当笔者乍看到该活动的时候同样也是心里一震,好营销好创意,既突出了说走就走的心理状态让不得已的白领心里痒痒的,又卖了文艺的情怀,装逼范儿十足,同时还纳入了时下最热门的直播平台作为实时传播平台,三合一的传播让人眼前一亮,而之后新世相披露微信转发过百万,增粉数超10万貌似为传播画上了一个比较圆满的句号,然而真的是这样吗?一、成功的活动策划、成功的PR宣传4小时后逃离北上广无疑是一次成功的营销活动,无论从说走就走的创意,还是逃离北上广的目的地选择都是一次撩动用户痛点的传播,这样的内容在撩动用户那颗脆弱的心上无往而不利,高晓松的眼前的苟且就是成功的样本之一,三年前喜力啤酒的改行程送机票也是这样的范本。前GQ副主编张伟在48万的世相被封后迅速推出了新世相公众号无疑是一个同样有逼格的大号,借助媒体人的新闻敏锐度迅速的把逃离北上广这个话题抛出来,话题本身就是长期热议话题,在北上广移民和暂住人口已经是当地人口两倍以上的当下,房价高涨带来一线城市生活成本和竞争压力的急剧恶化。逃离北上广本身已经变成一个时不时被提及的热门话题,同时文艺的文案内容本身也是符合新世相的一贯定位的(韩今谅影视工作室编辑君达乐的慢先生曾说过:”新世相的文章看上去总是一副中年男人要骗你上床的嘴脸。”),那就是用一个文艺的话题来撩动那些文艺与荷尔蒙齐飞的年轻人,再配合随机去到一个未知的目的地的的刺激性和说走就走的躁动,再点缀有意思的任务(比如邂逅1位董小姐吃拉面,与5只动物合影)一切都自成逼格。所以在该事件推出后,几乎所有的营销人或者策划人都炸裂了,我甚至看到有营销人评论这是一个“下半年最好的营销策划活动”,虽然下半年才刚开始。朋友圈也被营销人刷屏了,世相公布1.5小时10万+的阅读量,全天超过100万德阅读量,10万+的粉丝增长,也说明了话题自传播的广度。在夏天这个躁动的季节,仿佛大家都有了一个心理的宣泄口。所以从传播上来看,无论是活动内容策划、活动的文案、活动的机制、活动创意以及活动的传播引爆点上来,都是一个可圈可点的创意,活动也是一个成功的活动,即使作为全年的新媒体营销案例是拿奖也完全是无可厚非的,即时在不考虑周末二次传播和后期话题炒作的持续营销。二、一场剥离商业目标的典型自嗨营销和广告人有一个比较大的问题是无法避免自嗨,从4A公司或者营销机构出来的人会有一种特别的情节,那就是打造一些有逼格的创意来获奖,最终以是否获奖或者传播是否广泛来当做策划是否成功,或者以自我想理想当然为出发点来创意策划,通过优美的文案和活动机制来达到活动传播的目的,或者是为了纯粹做给老板看,但是他们忘记了,所有的活动和策划最终的目的都是为了品牌传播服务,或者说是为了业绩带动和用户认同服务的,剥离开这个品牌商业化的目标的所有商业行为都是一场自嗨,即使传播目的再广又有多少价值?即使拿到艾菲奖、戛纳广告奖又有什么价值呢?脑白金的广告数年没有任何变化low到爆,但仍然对销售有拉动,红星美凯龙的去头价拿奖不少但不知所谓,航班管家此次“此刻,做自己的主”电梯广告也是如此,笔者多位营销朋友和非互联网圈朋友均表示看不懂。之所以说4小时逃离北上广是一场典型的自嗨是因为:1、平台目标客群并不契合。航班管家作为品牌赞助方,最想要体现的是出票快的诉求,其电梯广告也就是以这样的诉求为主题来体现的,但航班管家真正的诉求和目标客群应该是其一脉相承的商务人士,他也是以此起家的,在航班管家的官网对自己的介绍仍然是“航班管家,是国内首款移动商旅应用”,CEO王江在参加2015年《赢在中国》对自己产品的官方介绍也是“航班管家是国内最早提出“场景服务”理念的公司,深得广大商旅人群的钟爱”,然而本次活动却为了迎合执行方新世相的目标客群,硬生生的做成了以文艺青年为目标客群的传播(谁让新世相是以文艺青年的定位红火起来的呢?)。但商务人士中年纪较长,男性居多,多家OTA的男性用户均超过60%,而张伟在MindStore会议上分享过新世相的用户画像:新世相的用户中 70% 左右是女性,大部分用户集中在北上广深一线大城市当中,使用 iPhone 的人数大概是 60%。学生是主力群体之一,传统行业的从业者,比如金融、教师等等,也都是主力群体之一。所以航班管家的目标客群和新世相的目标客群重合度并不高,在目标完全不精准的戏份市场投放广告,效果可想而知。2、活动创意导致目标客群不可能深度参与。4小时后逃离北上广活动需要用户到机场后才能参加并且到机场才能确定是否真的有票,这是一个极高的参与成本,毕竟机场不是商业区,机场的远距离让参与者门槛非常高,无论是作为文艺青年、商务人士或者公司白领,都不太可能花费专门的时间去机场博一个最多只有14张机票(北京14张,广州、上海各8张)的活动,况且还是在上班时间,真正参加活动的是大学生群体或者自由职业者,但这样的群体并不是航班管家的目标客群,当然也更加不可能实现说走就走的初衷,所以这就形成了一个怪圈,真正需要参与活动逃离北上广的文艺青年和白领人士是不会也没有空闲来参与活动的,而真正参加活动学生群体恰恰是没有逃离北上广需求的人。所以从活动机制上来看,4小时后逃离北上广本身就是没有达到航班管家目标用户群的一次自嗨,自嗨的目标并不是为了品牌传播,而是为了传播而传播,为了炒作而炒作,当然如果你要用直播中各个参与者介绍的职业来质疑,建议回顾下中奖用户对Uber的软植入以及知名模特、主持人、米娜瑞丽知名模特的邵玉菲居然为了2张香港往返机票自带妆容自带港澳通行证到达偏僻的北京机场参与活动。3、传播平台同样也是一大败笔。直播作为一个年轻用户特别是90后用户的聚集平台,本身白领人士以及商务人士的关注度并不高,文艺青年上直播同样是无稽之谈,更何况靠大多数直播平台的主流观众并不在北上广,而是在二三四线城市,所以选择直播媒介对目标受众的传播同样不具备价值。4、刷爆的不是朋友圈,而是营销人的朋友圈。笔者在前面曾提到过,该活动真正刷爆的是营销人的朋友圈和市场人的朋友圈,笔者30多个分享的朋友只有3个是非市场人和营销人而进行分享的,在咨询完其他的朋友后同样也发现新世相的活动并没有实现在普通用户中的疯狂霸屏结果。5、内容机制上同样自嗨显露无疑。新世相的活动文案介绍说,如果你需要请假,我能帮你和公司说一声,这是一句非常带有自我屌爆气质的文案,大家可以自行脑补身边的朋友说这样一句高高在上的文案是怎样的表情和语气,而这句文案真的能为需要请假的用户带来什么价值呢?大家也可以脑补当你的公司接到这样来电后是怎样的情景,而对于个人来说连自己公司的老板都不能搞定的人想要去自由的说走就走,恐怕不是任何一个成熟的个体,而新世相鼓动这样的个体参与自己的活动无疑是极不负责任的,这样的文案自嗨得不要不要的。三、新世相的蜜糖、航班管家的砒霜连长王江是二次创业者,是一位极其精明的创业者,然而这次却马失前蹄,航班管家作为整个活动的赞助商和推广方,传播的目的就是理论上是为了推广自己出票快和做自己的主的全新slogan,但是在本次的操盘和宣传中,全部变成了新世相为主导。微信渠道:主要的征集平台微信内容对航班管家的展示可以忽略不计(微信内容体现航班管家的是仅有两个地方:1、海报不醒目的地方展示1个2、提示现场有新世相和航班管家工作人员已等候在机场)微博渠道:新世相作为主持人的微博话题#4小时后逃离北上广#完全没有任何航班管家的展示,放佛自己就是唯一操盘者,而且在新世相的微博互动中除了告知帖居然没有AT过航班管家,航班管家自己的微博也是形单影只的玩耍。直播渠道:在直播过程中新世相的强势背景、logo植入,主持人的口播都全部变成了新世相,唯一航班管家的植入就是中奖者订票可以找航班管家的工作人员,航班管家的APP特点,航班管家想要主打的出票快功能只字未提,甚至连最好植入航班管家品牌的大型纸质机票都看不到航班管家的身影,昨日1点前的PR稿件也全部是新世相的活动。笔者不禁要问,航班管家去哪儿了?作为品牌的赞助商和活动方,如果一个活动完全不能体现品牌和品牌的内涵,那这样的活动究竟有什么意义?操盘这样的活动对品牌的价值又在哪里?所以活动做得传播力度越广,作为活动赞助商的航班管家会越失落,即使有wemedia这样的营销公司加入又能怎样?所以这场活动估计已经成为航班管家的梦魇,新世相获得了100万的阅读和10万的新增粉丝,航班管家收获了nothing。而在早上10点多直播结束后,世相(张伟)、航班管家(王江)、wemedia(李岩)也在中午上演了一场相爱相杀,wemedia李岩在策划爆红后表示没有花多少钱,紧接着张伟就在12:31发布微博公告表示:“该方案是我在办公室门口抽着烟用1分钟定下来的,与航班管家提了之后一拍即合,航班管家作为共同主办方,除此之外没有别人帮了忙”、“我们的诉求是一次品牌+商业策划。我们要赚到钱(并让出钱的人得到最好的回馈),要有很好的品牌效果”。本是同根生,相煎何太急?相爱相杀的结果估计也是张伟认识到了不妥,所以知乎上“如何评价航班管家4小时内逃离北上广的活动?”的回答和点赞数超过了“如何评价新世相4小时内逃离北上广的活动?”要知道在中午1:05分张伟在航班管家知乎帖发布公告时该贴只有1个粉丝评论,而新世相的知乎帖评论数已经超过20。此后航班管家才作为主角从世相和航班管家自己的PR文章上登场,开始有一些声音报道航班管家是本次活动的赞助商(文章来源:凤毛麟角(fengmaolj)),而作为直播平台的一直播同样没有获得太多的展示和体现。所以,4小时候后逃离北上广的整场策划,不过是新世相的一场心机营销,目的就是为了让粉丝记住新世相,把自己搞的多多的,把别人搞得少少的,看了宣传仍然还不知道是新世相、航班管家、一直播三家合办,而为了达到削弱其他两方的目的,新世项与航班管家、一直播或并未经过深度的沟通,后面第五部分我们会来进行解析。&Wemedia CEO李岩微信表示自己才是整个活动的策划者四、高门槛带来活动的巨大负面影响大家应该还记得上半年最成功也最失败的活动吧,?没错,就是春节的支付宝集五福活动,支付宝集五福极高的参与门槛带也来了4.2亿人参与,但只有79万人中奖,中奖率低到可以忽略不计,而最终也带来一波极大的负面舆论,因为较高的参与门槛带来的是用户较高成本和较高的获奖期望,当用户的期望没有得到满足最终将演变成一场负面的舆论,支付宝集五福活动后掀起的卸载和删除好友行为就是例证。4小时后逃离北上广同样也是这样的活动,用户参与门槛极高,需要从居住地到机场,到了机场后才能判定是否中奖,几十不考虑事先安排的中奖用户,每个城市也不过8个或14个用户可以中奖,而从世相后台公布的数据看,上千人报名,有人微博爆料自己在还剩三张机票时赶到机场却被工作人员拦下,微博上对新世相也是负面不断,网友表示到了现场找不到主办方。而在北京、上海、广州均有有两个机场的城市,用户完全不知道在那个地点集合,还有非常多的用户表示在虹桥机场等候结果参与活动的机场在相隔50公里的浦东机场,有更多的网友质疑世相微博删除负面评论,所以高期望用户到现场后若不能获得奖品也会带来极大的负面口碑风暴。但很明显,新世相并没有最好充分的负面,目前笔者看到的是其通过删除微博的方式来屏蔽负面声音,同时通过一个又一个的微博图文和微博回复来补漏用户对活动的质疑和疑问。五、仍然是一个略糙的营销活动世相作为活动的操盘者,拥有活动的整体把控权,从活动的航班管家利益体现以及一直播的利益体现就可以看到,后两者的体现极其薄弱。同时新世项可能与后两个合作伙伴的沟通并不顺畅,在公告内提到的和航班管家,笔者只提五个点来窥探该活动的糙点。1、主播并不专业。直播最重要的是主播,直播看起来是一个很简单的事情,但主播和内容策划是直播的双核心,但直播和主持差异较大,直播的交互作用依赖于主播对平台的了解和对互动的了解,但4小时逃离北上广的主播无论从临场表现还是互动上都不太专业,从内容的互动性和与观众的插科打诨仍然与直播平台的优质主播有较大的差异。笔者怀疑这些主播或是新世相的编辑,其中北京的主播微博的粉丝数仅有775个,如果新世相遇一直播保持深入的沟通,一直播现场就会派出信号调试员,同时或可派出专门的主播主播对活动进行报道,专业主播带来的粉丝互动价值将远远超过现在的主播,观众数也将翻番。2、直播账户缺乏粉丝。新世相的三个直播账户缺乏粉丝,从0粉丝启动直播完全依赖于平台推荐,所以最终新世相一直播的北京站最高同时在线人数显示是2.3万,最终不过41.9万人观看(为考虑平台刷数据的情况),而如果邀请一直播的主播使用自有账户来播出,最终观看人数或呈现数倍甚至数十倍的增长,能在更多年轻的直播用户中传播品牌。3、说走就走的主题并不契合航班管家。整个4小时逃离北上广在一般用户看来完全就是“说走就走”,包括新世相在之前的微信预热,以及昨天接受峰瑞资本的采访时,说走就走都是主基调和主要诉求,但说走就走在旅行行业老大携程的slogan,所以笔者有些朋友甚至在微博和朋友圈发问,这是否是携程的植入?知乎的讨论帖同样也有网友在询问是否是携程的植入,而如果与航班管家有过深入沟通势必不可能以携程的“说走就走”作为活动主题。4、活动预设把控太过。一场成功的营销和直播背后一定是预设和提前的脚本演练,但真正的预设是巧妙的植入,增之一分则太长,减之一分则太短。但新世相的预设无疑是并不成功的,其中香港线路就是最明显的败笔,因为正好抽到的大美女邵玉菲妆容精致,正好带了港澳通,正好还有有效期签注,还正好可以直飞香港,而邵玉菲微博粉丝105万,是知名平面模特、日本《mina》米娜中文版杂志第一届专署模特选拔大赛前3强、瑞丽的街拍模特,所以这样的一个知名模特“在微博上看到活动预告,关注了新世相,早上8点看到推送后收拾行李打车过来”,为了一张来回机票,这样的预设无论在那里也都是说不通的。5、不考虑旅行特性的强硬营销。中国的飞机经常面临各种不同的问题,晚点乃至取消,这方面航班管家作为行业7年的从业者有深刻的体会和经验,当然也自然有一套完善的应对方案。然而在昨天的直播中,我们能够看到新世相完全没有考虑这样的情况,丝毫不考虑上海和广州周末台风带来的航班取消以及延误的风险,仍然让用户出行,周日返回。所以只有两种可能性说明这一原因:1、新世相并未与航班管家对活动有深入的磋商;2、部分用户可能为噱头或者内定,台风并不会影响后续传播。&4小时后逃离北上广话题#4小时逃离北上广#截止14点仅1000万的阅读,2965个参与,直播最高同时在线2.3万,最终41.9万人观看数据(未考虑平台数据水分),从微博和直播的公开的数据来看,这并不是一个引爆的活动,尽管新世相自爆带来100万的阅读,10万的新增粉丝,那在黑盒子里的数据可信度恐怕要打一个问号。但无论怎样来说,从营销PR层面这绝对是一个有创意的营销活动,可是撇除营销的概念,以航班管家作为活动赞助商的层面来看,航班管家无疑是没有任何存在感的,这无疑是新世相的一次自嗨行为,未来或越来越多的企业与新世相进行合作,但融资9.33亿的航班管家无疑被新世相的心机所掩盖了,呜呼哀哉!同时其实从活动机制上这特别像是一个说走就走的活动,更像是为slogo叫说走就走的携程量身定制的活动,这一场自嗨你们可满意?
(下载iPhone或Android应用“经理人分享”,一个只为职业精英人群提供优质知识服务的分享平台。不做单纯的资讯推送,致力于成为你的私人智库。)
作者:毛琳Michael
文章相关知识点
评论&&|&& 条评论
畅阅·猜你喜欢&p&死宅一枚。爬取5000张二次元妹子的图片,生成了下面这张图(查看原图小图清晰可见)。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e86fa1c0fadcd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2193& data-rawheight=&2193& class=&origin_image zh-lightbox-thumb& width=&2193& data-original=&https://pic2.zhimg.com/v2-e86fa1c0fadcd_r.jpg&&&/figure&&p&&br&&/p&&p&具体制作流程:&/p&&ul&&li&使用 Scrapy 框架爬取5000张二次元图片&/li&&li&使用 opencv
批量格式化图片&/li&&li&将图片按照 HSV 欧式距离排序重新组合图片,实现效果&/li&&li&或者借助软件类似 &a href=&//link.zhihu.com/?target=http%3A//www.fmedda.com/home& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Foto-Mosaik-Edda&i class=&icon-external&&&/i&&/a& 实现相同效果&/li&&/ul&&p&&br&&/p&&p&Foto-Mosaik-Edda 合成软件 &a href=&//link.zhihu.com/?target=https%3A//pan.baidu.com/s/1kVu0GS3& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网盘下载&i class=&icon-external&&&/i&&/a&&/p&&p&5000张图片数据集合打包下载 &a href=&//link.zhihu.com/?target=https%3A//pan.baidu.com/s/1eRMJBUy& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pan.baidu.com/s/1eRMJBU&/span&&span class=&invisible&&y&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Github项目地址 &a href=&//link.zhihu.com/?target=https%3A//github.com/ThomasHuai/puzzle/blob/master/README.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://github.com/ThomasHuai/puzzle&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&h2&&b&一、安装开发环境&/b&&/h2&&p&&br&&/p&&ol&&li&安装 &b&Scrapy &/b&爬虫框架 &/li&&/ol&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&pip install Scrapy
&/code&&/pre&&/div&&p&&br&&/p&&p&windows 安装可以&a href=&//link.zhihu.com/?target=https%3A//sourceforge.net/projects/pywin32/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击此处&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&2. 推荐使用 wheel 来安装 opencv &a href=&//link.zhihu.com/?target=http%3A//www.lfd.uci.edu/%7Egohlke/pythonlibs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击此处&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&3.安装 numpy 科学计算库&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&pip install numpy
&/code&&/pre&&/div&&p&&br&&/p&&p&4. 初始化一个 Scrapy 项目 acg&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&scrapy startproject acg
&/code&&/pre&&/div&&h2&&b&二、爬取图片&/b&&/h2&&p&&br&&/p&&p&&b&日有效版本:&/b&&/p&&p&&br&&/p&&ul&&li&&b&更新爬取网站为
&/b&&a href=&//link.zhihu.com/?target=http%3A//www.acg.fi/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://www.acg.fi&i class=&icon-external&&&/i&&/a& (原先为 &a href=&//link.zhihu.com/?target=http%3A//www.52dmtp.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://www.52dmtp.com&i class=&icon-external&&&/i&&/a&)&/li&&li&&b&添加仿浏览器头部&/b&&/li&&li&&b&为新萌修复路径&/b&&/li&&/ul&&p&&br&&/p&&p&&b&日更新可用(感谢知友对项目的优化):&/b&&/p&&p&&br&&/p&&ul&&li&&b&1.捕获http异常,防止中断&/b&&/li&&li&&b&2.图片数据读取判断,防止入坑&/b&&/li&&li&&b&3.爬取二级页面分页&/b&&/li&&/ul&&p&&br&&/p&&p&&b&以下代码主要实现操作:&/b&&/p&&ul&&li&中间裁剪&/li&&li&统一大小&/li&&li&下载图片&/li&&li&重复抓取&/li&&/ul&&p&&br&&/p&&p&/image.py&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&c&&#coding=utf-8&/span&
&span class=&c&&#update at &/span&
&span class=&kn&&from&/span& &span class=&nn&&http.client&/span& &span class=&kn&&import&/span& &span class=&n&&IncompleteRead&/span&
&span class=&kn&&import&/span& &span class=&nn&&scrapy&/span&
&span class=&kn&&import&/span& &span class=&nn&&urllib.request&/span&&span class=&o&&,&/span&&span class=&nn&&urllib.parse&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span& &span class=&kn&&as&/span& &span class=&nn&&np&/span&
&span class=&kn&&import&/span& &span class=&nn&&cv2&/span&
&span class=&kn&&import&/span& &span class=&nn&&os&/span&
&span class=&k&&class&/span& &span class=&nc&&acgimages&/span&&span class=&p&&(&/span&&span class=&n&&scrapy&/span&&span class=&o&&.&/span&&span class=&n&&Spider&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&docstring for acgimages&&&&/span&
&span class=&n&&name&/span& &span class=&o&&=&/span& &span class=&s&&'images'&/span&
&span class=&n&&start_urls&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&
&span class=&s&&&http://www.acg.fi/anime/page/1&&/span&
&span class=&p&&]&/span&
&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&page&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&
&span class=&k&&def&/span& &span class=&nf&&parse3&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span&&span class=&n&&response&/span&&span class=&p&&):&/span&
&span class=&n&&image_url&/span& &span class=&o&&=&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&xpath&/span&&span class=&p&&(&/span&&span class=&s&&&//article[@class='article-content']//img/@src&&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&extract&/span&&span class=&p&&()&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&image_url&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&&一共找到图片&/span&&span class=&si&&%d&/span&&span class=&s&&&&/span& &span class=&o&&%&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&image_url&/span&&span class=&p&&))&/span&
&span class=&k&&for&/span& &span class=&n&&item&/span& &span class=&ow&&in&/span& &span class=&n&&image_url&/span&&span class=&p&&:&/span&
&span class=&n&&item&/span& &span class=&o&&=&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&parse&/span&&span class=&o&&.&/span&&span class=&n&&quote&/span&&span class=&p&&(&/span&&span class=&n&&item&/span&&span class=&p&&,&/span&&span class=&n&&safe&/span&&span class=&o&&=&/span&&span class=&s&&'/:?=.'&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&s&&'jpg'&/span& &span class=&ow&&in&/span& &span class=&n&&item&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&
&span class=&n&&path&/span& &span class=&o&&=&/span& &span class=&n&&os&/span&&span class=&o&&.&/span&&span class=&n&&path&/span&&span class=&o&&.&/span&&span class=&n&&dirname&/span&&span class=&p&&(&/span&&span class=&n&&os&/span&&span class=&o&&.&/span&&span class=&n&&path&/span&&span class=&o&&.&/span&&span class=&n&&abspath&/span&&span class=&p&&(&/span&&span class=&n&&__file__&/span&&span class=&p&&))&/span&&span class=&o&&+&/span& &span class=&s&&'/../img/'&/span& &span class=&o&&+&/span& &span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&s&&&.jpg&&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&imageSave&/span&&span class=&p&&(&/span&&span class=&n&&item&/span&&span class=&p&&,&/span&&span class=&n&&path&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&s&&'png'&/span& &span class=&ow&&in&/span& &span class=&n&&item&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&
&span class=&n&&path&/span& &span class=&o&&=&/span& &span class=&n&&os&/span&&span class=&o&&.&/span&&span class=&n&&path&/span&&span class=&o&&.&/span&&span class=&n&&dirname&/span&&span class=&p&&(&/span&&span class=&n&&os&/span&&span class=&o&&.&/span&&span class=&n&&path&/span&&span class=&o&&.&/span&&span class=&n&&abspath&/span&&span class=&p&&(&/span&&span class=&n&&__file__&/span&&span class=&p&&))&/span&&span class=&o&&+&/span& &span class=&s&&'/../img/'&/span& &span class=&o&&+&/span& &span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&count&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&s&&&.png&&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&imageSave&/span&&span class=&p&&(&/span&&span class=&n&&item&/span&&span class=&p&&,&/span&&span class=&n&&path&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&parse2&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span&&span class=&n&&response&/span&&span class=&p&&):&/span&
&span class=&n&&pages_url&/span& &span class=&o&&=&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&xpath&/span&&span class=&p&&(&/span&&span class=&s&&&//div[@class='fenye']//a/@href&&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&extract&/span&&span class=&p&&()&/span&
&span class=&n&&num&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&pages_url&/span&&span class=&p&&)&/span&&span class=&o&&==&/span&&span class=&mi&&0&/span&&span class=&p&&:&/span&
&span class=&n&&pages&/span& &span class=&o&&=&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&xpath&/span&&span class=&p&&(&/span&&span class=&s&&&//h1[@class='article-title']//a/@href&&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&extract&/span&&span class=&p&&()&/span&
&span class=&k&&yield&/span& &span class=&n&&scrapy&/span&&span class=&o&&.&/span&&span class=&n&&Request&/span&&span class=&p&&(&/span&&span class=&n&&pages&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span& &span class=&n&&callback&/span&&span class=&o&&=&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&parse3&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&k&&for&/span& &span class=&n&&pages&/span& &span class=&ow&&in&/span& &span class=&n&&pages_url&/span&&span class=&p&&[:&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&pages_url&/span&&span class=&p&&)&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]:&/span&
&span class=&n&&pages&/span&&span class=&o&&=&/span&&span class=&n&&pages&/span&&span class=&p&&[:&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&pages&/span&&span class=&p&&)&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&num&/span&&span class=&p&&)&/span&
&span class=&n&&num&/span&&span class=&o&&=&/span&&span class=&n&&num&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&
&span class=&k&&yield&/span& &span class=&n&&scrapy&/span&&span class=&o&&.&/span&&span class=&n&&Request&/span&&span class=&p&&(&/span&&span class=&n&&pages&/span&&span class=&p&&,&/span&&span class=&n&&callback&/span&&span class=&o&&=&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&parse3&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&parse&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span&&span class=&n&&response&/span&&span class=&p&&):&/span&
&span class=&n&&pages_url&/span& &span class=&o&&=&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&xpath&/span&&span class=&p&&(&/span&&span class=&s&&&//div[@class='card-item']//h3//a/@href&&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&extract&/span&&span class=&p&&()&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&&一共找到二级页面&/span&&span class=&si&&%d&/span&&span class=&s&&&&/span& &span class=&o&&%&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&pages_url&/span&&span class=&p&&))&/span&
&span class=&k&&for&/span& &span class=&n&&pages&/span& &span class=&ow&&in&/span& &span class=&n&&pages_url&/span&&span class=&p&&:&/span&
&span class=&k&&yield&/span& &span class=&n&&scrapy&/span&&span class=&o&&.&/span&&span class=&n&&Request&/span&&span class=&p&&(&/span&&span class=&n&&pages&/span&&span class=&p&&,&/span& &span class=&n&&callback&/span&&span class=&o&&=&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&parse2&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&page&/span& &span class=&o&&&&/span& &span class=&mi&&1180&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&page&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&page&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&
&span class=&n&&next_url&/span& &span class=&o&&=&/span& &span class=&s&&&http://www.acg.fi/anime/page/&/span&&span class=&si&&%d&/span&&span class=&s&&&&/span& &span class=&o&&%&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&page&/span&
&span class=&k&&yield&/span& &span class=&n&&scrapy&/span&&span class=&o&&.&/span&&span class=&n&&Request&/span&&span class=&p&&(&/span&&span class=&n&&next_url&/span&&span class=&p&&,&/span&&span class=&n&&callback&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&parse&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&imageSave&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span&&span class=&n&&item&/span&&span class=&p&&,&/span&&span class=&n&&path&/span&&span class=&p&&):&/span&
&span class=&n&&maxsize&/span& &span class=&o&&=&/span& &span class=&mi&&512&/span&
&span class=&n&&req&/span& &span class=&o&&=&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&request&/span&&span class=&o&&.&/span&&span class=&n&&Request&/span&&span class=&p&&(&/span&&span class=&n&&item&/span&&span class=&p&&)&/span&
&span class=&n&&req&/span&&span class=&o&&.&/span&&span class=&n&&add_header&/span&&span class=&p&&(&/span&&span class=&s&&&User-Agent&&/span&&span class=&p&&,&/span&&span class=&s&&&Mozilla/5.0 (M Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0. Safari/537.36&&/span&&span class=&p&&)&/span&
&span class=&n&&req&/span&&span class=&o&&.&/span&&span class=&n&&add_header&/span&&span class=&p&&(&/span&&span class=&s&&&GET&&/span&&span class=&p&&,&/span&&span class=&n&&item&/span&&span class=&p&&)&/span&
&span class=&n&&req&/span&&span class=&o&&.&/span&&span class=&n&&add_header&/span&&span class=&p&&(&/span&&span class=&s&&&Host&&/span&&span class=&p&&,&/span&&span class=&s&&&img.gov.com.de&&/span&&span class=&p&&)&/span&
&span class=&n&&req&/span&&span class=&o&&.&/span&&span class=&n&&add_header&/span&&span class=&p&&(&/span&&span class=&s&&&Referer&&/span&&span class=&p&&,&/span&&span class=&n&&item&/span&&span class=&p&&)&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&res&/span& &span class=&o&&=&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&request&/span&&span class=&o&&.&/span&&span class=&n&&urlopen&/span&&span class=&p&&(&/span&&span class=&n&&req&/span&&span class=&p&&,&/span&&span class=&n&&timeout&/span&&span class=&o&&=&/span&&span class=&mi&&30&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&read&/span&&span class=&p&&()&/span&
&span class=&n&&image&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&asarray&/span&&span class=&p&&(&/span&&span class=&nb&&bytearray&/span&&span class=&p&&(&/span&&span class=&n&&res&/span&&span class=&p&&),&/span&&span class=&n&&dtype&/span&&span class=&o&&=&/span&&span class=&s&&&uint8&&/span&&span class=&p&&)&/span&
&span class=&n&&image&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&imdecode&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span&&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&IMREAD_COLOR&/span&&span class=&p&&)&/span&
&span class=&n&&height&/span&&span class=&p&&,&/span&&span class=&n&&width&/span& &span class=&o&&=&/span& &span class=&n&&image&/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=&k&&if&/span& &span class=&n&&height&/span& &span class=&o&&&&/span& &span class=&n&&width&/span&&span class=&p&&:&/span&
&span class=&n&&scalefactor&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&maxsize&/span&&span class=&o&&*&/span&&span class=&mf&&1.0&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&n&&width&/span&
&span class=&n&&res&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,(&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&n&&scalefactor&/span&&span class=&p&&),(&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&height&/span& &span class=&o&&*&/span& &span class=&n&&scalefactor&/span&&span class=&p&&))),&/span&&span class=&n&&interpolation&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&INTER_CUBIC&/span&&span class=&p&&)&/span&
&span class=&n&&cutImage&/span& &span class=&o&&=&/span& &span class=&n&&res&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&:&/span&&span class=&n&&maxsize&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&:&/span&&span class=&n&&maxsize&/span&&span class=&p&&]&/span&
&span class=&k&&if&/span& &span class=&n&&width&/span& &span class=&o&&&=&/span& &span class=&n&&height&/span&&span class=&p&&:&/span&
&span class=&n&&scalefactor&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&maxsize&/span&&span class=&o&&*&/span&&span class=&mf&&1.0&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&n&&height&/span&
&span class=&n&&res&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,(&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&n&&scalefactor&/span&&span class=&p&&),&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&height&/span&&span class=&o&&*&/span&&span class=&n&&scalefactor&/span&&span class=&p&&)),&/span& &span class=&n&&interpolation&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&INTER_CUBIC&/span&&span class=&p&&)&/span&
&span class=&n&&center_x&/span& &span class=&o&&=&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&width&/span&&span class=&o&&*&/span&&span class=&n&&scalefactor&/span&&span class=&o&&*&/span&&span class=&mf&&0.5&/span&&span class=&p&&))&/span&
&span class=&n&&cutImage&/span& &span class=&o&&=&/span& &span class=&n&&res&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&:&/span&&span class=&n&&maxsize&/span&&span class=&p&&,&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&center_x&/span& &span class=&o&&-&/span& &span class=&n&&maxsize&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&):&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&center_x&/span& &span class=&o&&+&/span& &span class=&n&&maxsize&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&)]&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&imwrite&/span&&span class=&p&&(&/span&&span class=&n&&path&/span&&span class=&p&&,&/span&&span class=&n&&cutImage&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&'image is save in '&/span& &span class=&o&&+&/span& &span class=&n&&path&/span&&span class=&p&&)&/span&
&span class=&k&&except&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&error&/span&&span class=&o&&.&/span&&span class=&n&&HTTPError&/span& &span class=&k&&as&/span& &span class=&n&&e&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&e&/span&&span class=&o&&.&/span&&span class=&n&&code&/span&&span class=&p&&)&/span&
&span class=&k&&except&/span& &span class=&p&&(&/span&&span class=&n&&IncompleteRead&/span&&span class=&p&&)&/span& &span class=&k&&as&/span& &span class=&n&&e&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&e&/span&&span class=&o&&.&/span&&span class=&n&&code&/span&&span class=&p&&)&/span&
&span class=&k&&except&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&error&/span&&span class=&o&&.&/span&&span class=&n&&URLError&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&'URLError:&/span&&span class=&si&&%s&/span&&span class=&s&&'&/span& &span class=&o&&%&/span& &span class=&n&&item&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&&pageend,total:&/span&&span class=&si&&%d&/span&&span class=&s&&&&/span& &span class=&o&&%&/span& &span class=&n&&count&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&&b&三、生成图片&/b&&/h2&&p&&br&&/p&&p&软件下载地址:&a href=&//link.zhihu.com/?target=http%3A//www.fmedda.com/home& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Welcome | FMEdda | Foto-Mosaik-Edda&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&1.创建一个图片数据库&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c238ea522eae1dc110452_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-c238ea522eae1dc110452_r.jpg&&&/figure&&p&&br&&/p&&p&2.导入图片&/p&&figure&&img src=&https://pic4.zhimg.com/v2-3c96b8aa9a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/v2-3c96b8aa9a_r.jpg&&&/figure&&p&&br&&/p&&p&3.导入过程中&/p&&figure&&img src=&https://pic2.zhimg.com/v2-698a541dbca06c2df739e89f868c9ec9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-698a541dbca06c2df739e89f868c9ec9_r.jpg&&&/figure&&p&&br&&/p&&p&4.创建一个马赛克风格图片&/p&&figure&&img src=&https://pic2.zhimg.com/v2-2dac1a9e1ed0fe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-2dac1a9e1ed0fe_r.jpg&&&/figure&&p&&br&&/p&&p&5.打开原图&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f13fe31b655b9a6d28d7d358ffa6d176_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-f13fe31b655b9a6d28d7d358ffa6d176_r.jpg&&&/figure&&p&&br&&/p&&p&6.选择已经上传的数据库&/p&&figure&&img src=&https://pic4.zhimg.com/v2-faf0d935b4ef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&700& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/v2-faf0d935b4ef_r.jpg&&&/figure&&p&&br&&/p&&p&7.生成完成&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a6dddce4f5cb1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2040& data-rawheight=&2014& class=&origin_image zh-lightbox-thumb& width=&2040& data-original=&https://pic2.zhimg.com/v2-a6dddce4f5cb1_r.jpg&&&/figure&&p&&br&&/p&&p&简单高效的平民玩法到此结束。&/p&&p&&br&&/p&&p&逼格不够? &/p&&p&下面分享用 python 代码实现该软件的马赛克拼图效果。&/p&&p&&br&&/p&&p&日 本来今天开开心心。被迫更新&/p&&p&&br&&/p&&h2&&b&一、安装依赖&/b&&/h2&&p&&br&&/p&&p&1.安装图像处理库 pillow&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&pip install pillow
&/code&&/pre&&/div&&p&&br&&/p&&h2&&b&二、使用 python 做到马赛克拼图效果&/b&&/h2&&p&&br&&/p&&p&&b&日二更:&/b&&/p&&p&&br&&/p&&p&&b&1.使用 rgb 平均数实现类似效果&/b&&/p&&p&&b&2.完成多线程处理图片&/b&&/p&&p&&br&&/p&&p&取 rgb 平均值:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&get_avg_color&/span&&span class=&p&&(&/span&&span class=&n&&img&/span&&span class=&p&&):&/span&
&span class=&n&&width&/span&&span class=&p&&,&/span& &span class=&n&&height&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&size&/span&
&span class=&n&&pixels&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&load&/span&&span class=&p&&()&/span&
&span class=&n&&data&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&width&/span&&span class=&p&&):&/span&
&span class=&k&&for&/span& &span class=&n&&y&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&height&/span&&span class=&p&&):&/span&
&span class=&n&&content&/span& &span class=&o&&=&/span& &span class=&n&&pixels&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&]&/span&
&span class=&n&&data&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&content&/span&&span class=&p&&)&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&g&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&data&/span&&span class=&p&&)):&/span&
&span class=&n&&r&/span& &span class=&o&&+=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&g&/span& &span class=&o&&+=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&b&/span& &span class=&o&&+=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&count&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&n&&rAvg&/span& &span class=&o&&=&/span& &span class=&n&&r&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&
&span class=&n&&gAvg&/span& &span class=&o&&=&/span& &span class=&n&&g&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&
&span class=&n&&bAvg&/span& &span class=&o&&=&/span& &span class=&n&&b&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&
&span class=&k&&return&/span& &span class=&p&&(&/span&&span class=&n&&rAvg&/span&&span class=&p&&,&/span& &span class=&n&&gAvg&/span&&span class=&p&&,&/span& &span class=&n&&bAvg&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&计算近似图片&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&find_closiest&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&,&/span& &span class=&n&&list_colors&/span&&span class=&p&&):&/span&
&span class=&n&&diff&/span& &span class=&o&&=&/span& &span class=&mi&&10000&/span&
&span class=&n&&cur_closer&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&n&&arr_len&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&cur_color&/span& &span class=&ow&&in&/span& &span class=&n&&list_colors&/span&&span class=&p&&:&/span&
&span class=&n&&n_diff&/span& &span class=&o&&=&/span& &span class=&nb&&abs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&-&/span& &span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span& &span class=&o&&+&/span& &span class=&nb&&abs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&-&/span& &span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&])&/span&
&span class=&o&&+&/span& &span class=&nb&&abs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span& &span class=&o&&-&/span&&span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&])&/span&
&span class=&k&&if&/span& &span class=&n&&n_diff&/span& &span class=&o&&&&/span& &span class=&n&&diff&/span&&span class=&p&&:&/span&
&span class=&n&&diff&/span& &span class=&o&&=&/span& &span class=&n&&n_diff&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&cur_closer&/span&&span class=&p&&)&/span& &span class=&o&&&=&/span& &span class=&mi&&5&/span&&span class=&p&&:&/span&
&span class=&n&&cur_closer&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&cur_color&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&n&&arr_len&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&cur_color&/span&
&span class=&n&&arr_len&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&k&&if&/span& &span class=&n&&arr_len&/span& &span class=&o&&&&/span& &span class=&mi&&5&/span&&span class=&p&&:&/span&
&span class=&n&&arr_len&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&index&/span& &span class=&o&&=&/span& &span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&randint&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&cur_closer&/span&&span class=&p&&)&/span& &span class=&o&&-&/span& &span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&n&&index&/span&&span class=&p&&]&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&非洲鸟结果图:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-3ca1ab2d533532facad7924bbe1f14e4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-3ca1ab2d533532facad7924bbe1f14e4_r.jpg&&&/figure&&p&图片重复比较多,效果一般,颜色并不能准确的识别,偏暗的颜色有更大的权重,所以不是非常理想,之后更新了代码。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&日三更:&/b&&/p&&p&&br&&/p&&p&&b&1.使用 hsv (颜色空间)完成颜色精准适配&/b&&/p&&p&&b&2.自定义图片重复数量&/b&&/p&&p&&b&3.增加命令行进度条,增加命令行可自定义参数&/b&&/p&&p&&b&4.创建完成拼图数据库后可以直接合成,不用重复执行创建&/b&&/p&&p&&b&5.修复代码,提高执行效率&/b&&/p&&p&&br&&/p&&p&hsv (颜色空间模型)&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-26bedd98dbbc42bf69978a73ccf4c520_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&242& data-rawheight=&270& class=&content_image& width=&242&&&/figure&&p&&br&&/p&&p&hsv 两点间距离公式(欧式距离):&/p&&p&&img src=&//www.zhihu.com/equation?tex=cost+%3D+%5Csqrt%7B%7Ch1%5E2+-h2%5E2%7C%2B%7Cs1%5E2+-s2%5E2%7C%2B%7Cv1%5E2+-v2%5E2%7C%7D& alt=&cost = \sqrt{|h1^2 -h2^2|+|s1^2 -s2^2|+|v1^2 -v2^2|}& eeimg=&1&&&/p&&p&&br&&/p&&p&核心方法,使用 hsv 平均值代替二更的 rgb 平均值,效果更好。&/p&&p&&br&&/p&&p&\main.py&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&get_avg_color&/span&&span class=&p&&(&/span&&span class=&n&&img&/span&&span class=&p&&):&/span&
&span class=&n&&width&/span&&span class=&p&&,&/span& &span class=&n&&height&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&size&/span&
&span class=&n&&pixels&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&load&/span&&span class=&p&&()&/span&
&span class=&n&&data&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&width&/span&&span class=&p&&):&/span&
&span class=&k&&for&/span& &span class=&n&&y&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&height&/span&&span class=&p&&):&/span&
&span class=&n&&cpixel&/span& &span class=&o&&=&/span& &span class=&n&&pixels&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&]&/span&
&span class=&n&&data&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&cpixel&/span&&span class=&p&&)&/span&
&span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&s&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&v&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&data&/span&&span class=&p&&)):&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&g&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&count&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&n&&hsv&/span& &span class=&o&&=&/span& &span class=&n&&rgb_to_hsv&/span&&span class=&p&&(&/span&&span class=&n&&r&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&,&/span&&span class=&n&&g&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&,&/span&&span class=&n&&b&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&)&/span&
&span class=&n&&h&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&s&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&v&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&hAvg&/span& &span class=&o&&=&/span& &span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&h&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&n&&sAvg&/span& &span class=&o&&=&/span& &span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&s&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&n&&vAvg&/span& &span class=&o&&=&/span& &span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&v&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&p&&(&/span&&span class=&n&&hAvg&/span&&span class=&p&&,&/span&&span class=&n&&sAvg&/span&&span class=&p&&,&/span&&span class=&n&&vAvg&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&核心方法,使用欧式距离求cost最小值&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&find_closiest&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&,&/span& &span class=&n&&list_colors&/span&&span class=&p&&):&/span&
&span class=&n&&diff&/span& &span class=&o&&=&/span& &span class=&mi&&1000&/span&
&span class=&n&&cur_closer&/span& &span class=&o&&=&/span& &span class=&bp&&False&/span&
&span class=&n&&arr_len&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&cur_color&/span& &span class=&ow&&in&/span& &span class=&n&&list_colors&/span&&span class=&p&&:&/span&
&span class=&n&&n_diff&/span& &span class=&o&&=&/span& &span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&sqrt&/span&&span class=&p&&(&/span&&span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&pow&/span&&span class=&p&&(&/span&&span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&fabs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&&span class=&o&&-&/span&&span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]),&/span& &span class=&mi&&2&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&pow&/span&&span class=&p&&(&/span&&span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&fabs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&&span class=&o&&-&/span&&span class=&n&&cur_color&/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=&o&&+&/span& &span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&pow&/span&&span class=&p&&(&/span&&span class=&n&&math&/span&&span class=&o&&.&/span&&span class=&n&&fabs&/span&&span class=&p&&(&/span&&span class=&n&&color&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&o&&-&/span&&span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]),&/span& &span class=&mi&&2&/span&&span class=&p&&))&/span&
&span class=&k&&if&/span& &span class=&n&&n_diff&/span& &span class=&o&&&&/span& &span class=&n&&diff&/span& &span class=&ow&&and&/span& &span class=&n&&cur_color&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span& &span class=&o&&&=&/span& &span class=&n&&REPATE&/span&&span class=&p&&:&/span&
&span class=&n&&diff&/span& &span class=&o&&=&/span& &span class=&n&&n_diff&/span&
&span class=&n&&cur_closer&/span& &span class=&o&&=&/span& &span class=&n&&cur_color&/span&
&span class=&k&&if&/span& &span class=&ow&&not&/span& &span class=&n&&cur_closer&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&s&&&没有足够的近似图片,建议设置重复&&/span&&span class=&p&&)&/span&
&span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&k&&return&/span& &span class=&s&&&({}, {}, {})&&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&&span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span&&span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span&&span class=&n&&cur_closer&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&])&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&&br&&/p&&p&全部代码&/p&&p&/main.py&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&kn&&import&/span& &span class=&nn&&os&/span&
&span class=&kn&&from&/span& &span class=&nn&&PIL&/span& &span class=&kn&&import&/span& &span class=&n&&Image&/span&&span class=&p&&,&/span&&span class=&n&&ImageOps&/span&
&span class=&kn&&import&/span& &span class=&nn&&argparse&/span&
&span class=&kn&&import&/span& &span class=&nn&&time&/span&
&span class=&kn&&from&/span& &span class=&nn&&multiprocessing&/span& &span class=&kn&&import&/span& &span class=&n&&Pool&/span&
&span class=&kn&&import&/span& &span class=&nn&&random&/span&
&span class=&kn&&import&/span& &span class=&nn&&math&/span&
&span class=&kn&&import&/span& &span class=&nn&&sys&/span&
&span class=&kn&&from&/span& &span class=&nn&&colorsys&/span& &span class=&kn&&import&/span& &span class=&n&&rgb_to_hsv&/span&
&span class=&n&&SLICE_SIZE&/span& &span class=&o&&=&/span& &span class=&mi&&85&/span&
&span class=&n&&OUT_SIZE&/span& &span class=&o&&=&/span& &span class=&mi&&5000&/span&
&span class=&n&&IN_DIR&/span& &span class=&o&&=&/span& &span class=&s&&&database/&&/span&
&span class=&n&&OUT_DIR&/span& &span class=&o&&=&/span& &span class=&s&&&output/&&/span&
&span class=&n&&REPATE&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&def&/span& &span class=&nf&&get_avg_color&/span&&span class=&p&&(&/span&&span class=&n&&img&/span&&span class=&p&&):&/span&
&span class=&n&&width&/span&&span class=&p&&,&/span& &span class=&n&&height&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&size&/span&
&span class=&n&&pixels&/span& &span class=&o&&=&/span& &span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&load&/span&&span class=&p&&()&/span&
&span class=&k&&if&/span& &span class=&nb&&type&/span&&span class=&p&&(&/span&&span class=&n&&pixels&/span&&span class=&p&&)&/span& &span class=&ow&&is&/span& &span class=&ow&&not&/span& &span class=&nb&&int&/span&&span class=&p&&:&/span&
&span class=&n&&data&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&width&/span&&span class=&p&&):&/span&
&span class=&k&&for&/span& &span class=&n&&y&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&height&/span&&span class=&p&&):&/span&
&span class=&n&&cpixel&/span& &span class=&o&&=&/span& &span class=&n&&pixels&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&]&/span&
&span class=&n&&data&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&cpixel&/span&&span class=&p&&)&/span&
&span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&s&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&v&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&n&&count&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&data&/span&&span class=&p&&)):&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&g&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&n&&data&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&count&/span& &span class=&o&&+=&/span& &span class=&mi&&1&/span&
&span class=&n&&hsv&/span& &span class=&o&&=&/span& &span class=&n&&rgb_to_hsv&/span&&span class=&p&&(&/span&&span class=&n&&r&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&,&/span&&span class=&n&&g&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&,&/span&&span class=&n&&b&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&p&&)&/span&
&span class=&n&&h&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&s&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&v&/span& &span class=&o&&+=&/span& &span class=&n&&hsv&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&hAvg&/span& &span class=&o&&=&/span& &span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&h&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&n&&sAvg&/span& &span class=&o&&=&/span& &span class=&nb&&round&/span&&span class=&p&&(&/span&&span class=&n&&s&/span& &span class=&o&&/&/span& &span class=&n&&count&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&n&&vAvg&/span& &span class=&o&&=&/span& &span c}

我要回帖

更多关于 杜蕾斯文案团队是谁 的文章

更多推荐

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

点击添加站长微信