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

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

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



首先,用scrapy框架爬取某表情网站表情图,源码附赠:
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()

full_url = 'http://qq.yh31.com'+ ''.join(list(href))

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

#文件夹名称

if hreftext=='>更多>':

continue

path = 'C:GIF'

if not os.path.exists(path):

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):

full_url='http://qq.yh31.com'+url1[0]+'_'+str(i)+'.html'

#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)

if not os.path.exists(path):

os.makedirs(path)

for lst in resp:

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

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

src = 'http://qq.yh31.com'+ ''.join(list(src))

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二值化标识马赛克对图片进行二值化处理;代码如下:

关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货

每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实



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


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


猜你喜欢

转载自blog.csdn.net/chengxuyuan997/article/details/80728031
今日推荐