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作為引數,推理並修復圖片。