首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python制作表情包还能去掉马赛克?教程在手,看片无忧

关键时刻,第一时间送达!

在去马赛克教程之前我们先来说说表情包斗图这点事,有没有遇到这种时刻:朋友不断发来有趣又生动的表情包,连连霸屏你的聊天记录,你却半天才发出一句话,无图抵抗的囧态?今天小编教你一招逆袭!

本招瞬间秒杀你的斗图好友!表情包不仅仅是一张图片,一张动图,更是一种精神,是我们生活中的调味剂,慢慢一张张去寻找存在、保存再发送,是不是好累好麻烦?想想算了,斗图斗不过,打字也不想打,等着被KO?python在手,斗图无敌手!小编来救你(坏笑ing)

首先,用scrapy框架爬取某表情网站表情图,源码附赠:

(本文源码和部分图片引用自:https://www.52pojie.cn/forum.php?mod=viewthread&tid=698696)

import scrapy

import os,sys

import requests

import re

class scrapyone(scrapy.Spider):

name = "stackone"

start_urls = ["http://qq.yh31.com/ql/bd/"]

def parse(self,response):

hrf=response.xpath('//*[@id="main_bblm"]/div[2]/dl/dd/li')

for li in hrf:

item={}

href=li.xpath('a/@href').extract()

hreftext=li.xpath('a/text()').extract()

hreftext=''.join(list(hreftext))

#文件夹名称

if hreftext=='>更多>':

continue

path = 'C:GIF'

os.makedirs(path)

item['dirname']=hreftext

yield scrapy.Request(url=full_url,meta={'key':item},callback = self.parse1)

def parse1(self,response):

ite={}

full_url=[]

url1 = response.xpath('//*[@id="pe100_page_infolist"]/a[2]/@href').extract()

url2 = response.xpath('//*[@id="pe100_page_infolist"]/a[2]/@href').re('d+')

url1 = ''.join(url1)

url1 = url1.split('_')

url2 = ''.join(url2)

ite['dirn']=response.meta['key']['dirname']

for i in range(1,int(url2)+1):

#print(full_url)

yield scrapy.Request(url=full_url,meta={'key1':ite},callback = self.parse2)

def parse2(self,response):

p1=response.meta['key1']['dirn']

resp = response.xpath('//*[@id="main_bblm"]/div[1]/li/dt/a')

path = 'C:GIF'+''.join(p1)

os.makedirs(path)

for lst in resp:

alt = lst.xpath('img/@alt').extract()

src = lst.xpath('img/@src').extract()

alt = ''.join(list(alt))

html=requests.get(src)

with open(path+''+alt+'.gif', 'wb') as file:

file.write(html.content)

脚本执行方式:cmd-->切换到脚本所在目录-->scrapy runspider xxxx.py

最终成效

执行后会自动根据GIF分类在c:gif文件夹下建立相应文件夹存储gif图片,想发那张发哪张,那么对于那些图片上的马赛克,你有没有很苦恼?如果上面的表情包爬取还不够满足你,那么接下来,教你如何去掉图片马赛克,先来看看效果图:

厉害不?

其实技巧是利用了Python中OPenCV的优势,标定马赛克的特征,使用CV2.inRange二值化标识马赛克对图片进行二值化处理;代码如下:

其次,使用OPenCV的dilate方法,扩展特征的区域,优化图片处理效果;

最后使用inpaint方法,把噪声的mask作为参数,推理并修复图片。

来源:python编程

https://mp.weixin.qq.com/s/7wA8svS-PErrejzrK9R4tw

Python开发整理发布,转载请联系作者获得授权

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180617B15W1W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券