成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 用Python做個個性的動畫掛件讓桌面不單調(diào)

用Python做個個性的動畫掛件讓桌面不單調(diào)

熱門標簽:高德地圖標注收入咋樣 銀川電話機器人電話 鶴壁手機自動外呼系統(tǒng)違法嗎 萊蕪電信外呼系統(tǒng) 企業(yè)微信地圖標注 怎么辦理400客服電話 沈陽防封電銷電話卡 B52系統(tǒng)電梯外呼顯示E7 地圖標注多個

前言

前段時間,寫了篇博客自己用python做的一款超炫酷音樂播放器。有粉絲問我,音樂播放器為什么要用PyQt5,效果是不是比Tkinter贊?PyQt5真的可以實現(xiàn)這些炫酷的UI畫面嗎?之前沒接觸過PyQt5,能不能多分享一些這方面的開發(fā)案例?

今天就帶大家,一起用Python的PyQt5開發(fā)一個有趣的自定義桌面動畫掛件,看看實現(xiàn)的動畫掛件效果!

下面,我們開始介紹這個自定義桌面動畫掛件的制作過程。

一、核心功能設(shè)計

總體來說,我們需要實現(xiàn)將自己喜歡的動態(tài)圖gif或者視頻轉(zhuǎn)成一個桌面動畫掛件,知識點主要包含了對GIF圖/視頻解析,人像提取分割,PyQt5窗體設(shè)置,自定義掛件動畫實現(xiàn),ico圖標生成,程序打包等。

拆解需求,大致可以整理出我們需要分為以下幾步完成:

  1. 對gif或者視頻進行逐幀解析,獲取轉(zhuǎn)換的圖片,提取圖像中人體區(qū)域,并對圖片進行批量尺寸大小修改替換
  2. 初始化設(shè)置動畫掛件窗體顯示效果,窗體位置、大小等
  3. 桌面動畫掛件功能實現(xiàn),動畫輪播、鼠標控制掛件位置拖動
  4. 掛件打包圖標設(shè)置、打包配置

二、實現(xiàn)步驟

1. 解析提取,修改圖片

GIF圖解析:

Gif動態(tài)圖資源大家可以根據(jù)自己的喜好,自己選擇。博主就用之前寫過的仙女蹦迪動態(tài)Gif來演示效果。

首先我們需要將Gif動態(tài)圖按照每一幀進行解析 ,轉(zhuǎn)換成圖片格式。代碼如下:

from PIL import Image  # 導入PIL的Image包
import os
gifFileName = "./demo.gif"  # 把gif圖賦值給gifFileName
im = Image.open(gifFileName)  # 使用Image的open函數(shù)打開test.gif圖像
pngDir = gifFileName[:-4]  # 倒著從gifFileName中的倒數(shù)第四個開始取字符(跳過.gif),賦值給pngDir,作為文件夾的名字
if not os.path.exists(pngDir):
    os.makedirs('./img')  # 用圖片名創(chuàng)建一個文件夾,用來存放每幀圖片,名字為pngDir的值

try:
  while True:  # 死循環(huán)
    current = im.tell()  # 用tell函數(shù)保存當前幀圖片,賦值給current
    im.save(pngDir+'/'+str(current+1)+'.png')  # 調(diào)用save函數(shù)保存該幀圖片
    im.seek(current+1)  # 調(diào)用seek函數(shù)獲取下一幀圖片,參數(shù)變?yōu)閏urrent幀圖片+1
    # 這里再次進入循環(huán),當為最后一幀圖片時,seek會拋出異常,代碼執(zhí)行except
except EOFError:
    pass  # 最后一幀時,seek拋出異常,進入這里,pass跳過

這樣就可以把動態(tài)Gif圖轉(zhuǎn)換成圖片了,效果如下:

視頻解析:

同理,對視頻解析,也是按照每一幀進行解析,轉(zhuǎn)換成圖片格式。核心代碼如下:

# 將視頻按照每一幀轉(zhuǎn)成圖片png
import cv2
videoFileName = "./demo.mp4"  # 把視頻路徑賦值給videoFileName
pngDir = videoFileName[:-4]  # 倒著從gifFileName中的倒數(shù)第四個開始取字符(跳過.后綴),賦值給pngDir,作為文件夾的名字
if not os.path.exists(pngDir):
    os.makedirs(pngDir)  # 用圖片名創(chuàng)建一個文件夾,用來存放每幀圖片,名字為pngDir的值
# 視頻處理 分割成一幀幀圖片
cap = cv2.VideoCapture(videoFileName)
num = 1
while True:
    # 逐幀讀取視頻  按順序保存到本地文件夾
    ret, frame = cap.read()
    if ret:
        cv2.imwrite(f"{pngDir}/{num}.png", frame)  # 保存一幀幀的圖片
        num += 1
    else:
        break
cap.release()   # 釋放資源

效果如下:

逐幀提取的圖片已經(jīng)拿到了,下面我們需要對這些圖片中的人像進行分割提取。

人像分割:

我們調(diào)用的是百度開放的人體分析接口 – 百度AI開放平臺鏈接。

這里面我們可以創(chuàng)建一個人像分割的應用,其中的API Key及Secret Key后面我們調(diào)用人臉識別檢測接口時會用到。

我們可以看到官方提供的幫助文檔,介紹地很詳細。如何調(diào)用請求URL數(shù)據(jù)格式,向API服務地址使用POST發(fā)送請求,必須在URL中帶上參數(shù)access_token,可通過后臺的API Key和Secret Key生成。這里面的API Key和Secret Key就是我們上面提到的。


那我們?nèi)绾潍@取空背景的人像圖片呢?根據(jù)API文檔,可以看到里面有個type屬性設(shè)置為foreground 就可以提取空背景的人像圖片。

人像分割的接口流程基本就已經(jīng)清楚了,可以進行代碼實現(xiàn)了。

# 保存圖片
def save_base_image(img_str, filename):
    img_data = base64.b64decode(img_str)
    with open(filename, 'wb') as f:
        f.write(img_data)

# 獲取token
def get_token():
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentialsclient_id=' + client_id + 'client_secret=' + client_secret
    request = urllib.request.Request(host)
    request.add_header('Content-Type', 'application/json; charset=UTF-8')
    response = urllib.request.urlopen(request)
    token_content = response.read()
    if token_content:
        token_info = json.loads(token_content)
        token_key = token_info['access_token']
    return token_key

# 人像分割
def body_seg_fore(filename, resultfilename):
    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg"

    # 二進制方式打開圖片文件
    f = open(filename, 'rb')
    img = base64.b64encode(f.read())

    params = dict()
    params['image'] = img
    params['type'] = 'foreground'
    params = urllib.parse.urlencode(params).encode("utf-8")
    # params = json.dumps(params).encode('utf-8')

    access_token = get_token()
    request_url = request_url + "?access_token=" + access_token
    request = urllib.request.Request(url=request_url, data=params)
    request.add_header('Content-Type', 'application/x-www-form-urlencoded')
    response = urllib.request.urlopen(request)
    content = response.read()
    if content:
        # print(content)
        content = content.decode('utf-8')
        # print(content)
        data = json.loads(content)
        # print(data)
        img_str = data['foreground']
        save_base_image(img_str, resultfilename)

這樣我們就可以根據(jù)圖片,進行人像分割,提取出空背景的人像圖。效果如下:


如果提取的人像圖片大小不符合我們的要求,我們還可以對圖片大小進行調(diào)整。

file_list = os.listdir("./image")  # 讀取當前文件夾所有文件
# print(file_list)
n = len(file_list)
for i in range(n):
    s = str(file_list[i])
    if s[-4:] == ".png":  # 檢查后綴
        src = os.path.join(os.path.abspath('./image/'), s)  # 原先的圖片名字
        img = Image.open(src)
        new_img = img.resize((128, 128), Image.BILINEAR)
        new_img.save(src)

我們需要的空背景圖片已經(jīng)拿到了,接下來我們來實現(xiàn)桌面掛件功能。

2.初始化動畫掛件

# 窗體初始化
def windowinit(self):
    self.x = 1650
    self.y = 860
    self.setGeometry(self.x, self.y, 300, 300)
    self.setWindowTitle('My Gadgets')
    self.img_num = 1
    self.img_path = './image/{file}/{img}.png'.format(file=self.dis_file, img=str(self.img_num))
    self.lab = QLabel(self)
    self.qpixmap = QPixmap(self.img_path)
    self.lab.setPixmap(self.qpixmap)
    self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
    self.setAutoFillBackground(False)
    self.setAttribute(Qt.WA_TranslucentBackground, True)
    self.show()

def __init__(self):
    super(Gadgets, self).__init__()

    self.dis_file = "img1"
    self.windowinit()
    self.icon_quit()

    self.pos_first = self.pos()
    self.img_count = len(os.listdir('./image/{}'.format(self.dis_file)))

這樣圖片掛件就可以顯示出來,效果如下:

現(xiàn)在的桌面掛件是靜態(tài)顯示,下面我們可以通過計時器進行掛件動畫輪播顯示。

3.動畫掛件功能實現(xiàn)

動畫輪播:

self.timer = QTimer()
self.timer.timeout.connect(self.img_update)
self.timer.start(100)
def img_update(self):
    if self.img_num  self.img_count:
        self.img_num += 1
    else:
        self.img_num = 1
    self.img_path = './image/{file}/{img}.png'.format(file=self.dis_file, img=str(self.img_num))
    self.qpixmap = QPixmap(self.img_path)
    self.lab.setPixmap(self.qpixmap)

鼠標控制掛件位置拖動:

def mousePressEvent(self, QMouseEvent):
    if QMouseEvent.button() == Qt.LeftButton:
        self.pos_first = QMouseEvent.globalPos() - self.pos()
        QMouseEvent.accept()
        self.setCursor(QCursor(Qt.OpenHandCursor))

def mouseMoveEvent(self, QMouseEvent):
    if Qt.LeftButton:
        self.move(QMouseEvent.globalPos() - self.pos_first)
        print(self.pos())
        self.x, self.y = self.pos().x, self.pos().y
        QMouseEvent.accept()

def quit(self):
    self.close()
    sys.exit()

至此,自定義動畫掛件功能已經(jīng)實現(xiàn)完成,動畫掛件效果如下:

4.打包配置

前段時間有粉絲問我,Python能不能打包成exe?如何打包呢?今天就通過這個來一起介紹下。

Python常用的打包工具是第三方庫Pyinstaller,首先需要安裝下pyinstaller。

pip install Pyinstaller

接下來,我們需要打開命令窗口,切換到項目目錄下再執(zhí)行打包命令。

pyinstaller -F -i ./img.ico Qt_Gadgets.py

打包常用的參數(shù)如下:

  • -F 表示生成單個可執(zhí)行文件
  • -w 表示去掉控制臺窗口,這在GUI界面時非常有用。不過如果是命令行程序的話那就把這個選項刪除吧!
  • -p 表示你自己自定義需要加載的類路徑,一般情況下用不到
  • -i 表示可執(zhí)行文件的圖標

之前有小伙伴問我,打包的圖標需要.ico后綴的圖片,應該如何把普通圖片轉(zhuǎn)成圖標格式.ico呢?Python當然可以幫你實現(xiàn),今天就一起教給大家。核心代碼如下:

import PythonMagick

# 生成圖標ico(png格式圖片轉(zhuǎn)成ico)
img = PythonMagick.Image('./image/img1/1.png')
# 這里要設(shè)置一下尺寸,不然會報ico尺寸異常錯誤
img.sample('128x128')
img.write('./img.ico')

圖標得到了,下面我們就可以進行打包操作了。

打包完成之后,我們可以看見項目目錄下會有生成的exe程序。

至此,整個自定義動畫掛件就全部完成了,下面我們一起運行下exe看看動畫掛件效果。

今天我們就到這里,明天繼續(xù)努力!

如果本篇博客有任何錯誤,請批評指教,不勝感激 !

到此這篇關(guān)于用Python做個個性的動畫掛件讓桌面不單調(diào)的文章就介紹到這了,更多相關(guān)Python自定義動畫掛件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • AI:如何訓練機器學習的模型
  • 使用JavaSE來模擬斗地主
  • 用python做個代碼版的小仙女蹦迪視頻
  • 詳細過程帶你用Python做車牌自動識別系統(tǒng)
  • Python做個自定義動態(tài)壁紙還可以放視頻
  • 自己用python做的一款超炫酷音樂播放器
  • 我用Python做個AI出牌器斗地主把把贏

標簽:葫蘆島 湘西 安慶 呼倫貝爾 銀川 烏魯木齊 三亞 呼倫貝爾

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用Python做個個性的動畫掛件讓桌面不單調(diào)》,本文關(guān)鍵詞  用,Python,做,個個,性的,動畫,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用Python做個個性的動畫掛件讓桌面不單調(diào)》相關(guān)的同類信息!
  • 本頁收集關(guān)于用Python做個個性的動畫掛件讓桌面不單調(diào)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲高清在线免费| 免费看黄裸体一级大秀欧美| 91精品久久久久久综合乱菊| www.国产黄色| 成人黄色在线免费| 九九热视频精品| 亚洲精品乱码久久久久久动漫| 欧美日韩成人在线播放| 日韩欧美第一页| 电影午夜精品一区二区三区| 亚洲专区在线视频| 日韩av一二三| 97中文在线观看| 精品视频一区二区在线观看| 免费成人深夜夜行网站视频| 91免费在线视频网站| 九九爱在线视频观看免费视频| 人成在线视频| 极品少妇xxxx精品少妇偷拍| 91视频 - 88av| 成年网在线观看免费观看网址| 久久久久久国产精品三级玉女聊斋| 九色91播放| 综合久久99| 少妇大叫太大太粗太爽了a片小说| 波多野结衣a v在线| 国产精品视频一区二区在线观看| 日韩一区二区三区视频在线观看| 亚洲无吗一区二区三区| 中文字幕在线观看国产| av永久免费观看| 精品一区二区三区在线观看视频| 91porn在线视频| 国产性猛交╳xxx乱大交| 天堂中文字幕在线| 日韩精品视频一区二区在线观看| 狠狠色综合色综合网络| 日韩理论片中文av| 久久精品久久精品亚洲人| 亚洲视频一起| 一区二区三区视频网站| 激情综合五月天| 在线中文字幕视频| 中文字幕在线看视频国产欧美在线看完整| 大菠萝精品导航| 欧美亚洲一区在线| 日韩成人动漫| 亚洲日本电影在线| 日韩免费观看高清完整版在线观看| 91久久国产精品91久久性色| 亚洲第一福利社区| 亚洲6080在线| 在线不卡免费视频| 亚洲va欧美va在线观看| 欧美乱大交xxxxx潮喷l头像| 天天综合入口| 欧美在线欧美在线| 影音先锋亚洲天堂| 久久综合电影| 欧美精品一区二区高清在线观看| 99久久久久| 亚洲激情中文在线| 欧美成人se01短视频在线看| 在线成人激情视频| 成人国产一区| 男女性色大片免费观看一区二区| 久久久久国产一区二区三区| 国产福利免费视频| 26uuu欧美| 38少妇精品导航| 日韩制服诱惑| 九色视频在线观看免费播放| 综合激情网...| 日日狠狠久久偷偷四色综合免费| 美女国产精品久久久| 日韩欧美在线123| 国产成人亚洲一区二区三区| 亚洲综合精品自拍| 亚洲精品自拍动漫在线| 成人中文字幕合集| 高清一区二区视频| 又黄又www的网站| 一区av在线播放| 亚洲av永久无码国产精品久久| 免费在线观看的av网站| 成人无码精品1区2区3区免费看| 亚洲另类在线视频| 黄色网页网址在线免费| 欧美国产偷国产精品三区| 中文 欧美 日韩| 久久人妻免费视频| 在线播放性xxx欧美| 日韩和欧美一区二区| 99久久免费国| 网站一区二区三区| 亚洲mv在线| 最新热久久免费视频| 成人日韩在线观看| 亚洲毛片在线免费观看| 欧美在线a视频| 女性隐私黄www网站视频| 欧美三级午夜理伦三级老人| 国产无套粉嫩白浆在线2022年| 天天爽夜夜爽| 国产精品午夜久久| 精品国产乱码久久久久久蜜臀| 国产日韩欧美自拍| 男人午夜视频在线观看| 亚洲综合网在线| 中文字幕av免费| 91porn在线观看| 黄频网站在线观看| 国产美女精品视频免费观看| 亚洲一区二区三区四区五区| 欧美jizz| 成人a级免费视频| 欧美性生活久久| 久久综合免费视频影院| 精品国产自在精品国产浪潮| 黄色片久久久久| 亚洲欧美日韩一区成人| 波多野结衣在线观看一区二区| 免费久久99精品国产自在现线| 中文字幕の友人北条麻妃| av福利精品导航| 欧美精品一区二区三区蜜桃视频| 日av在线播放中文不卡| 老司机aⅴ毛片免费观看| 国产精品福利观看| 中文字幕一区二区三区色视频| 在线观看视频网站你懂得| 成人免费福利视频| 国产一区二区在线观| 另类综合日韩欧美亚洲| 最近中文字幕大全中文字幕免费| 亚洲国产日韩a在线播放| av中文字幕免费在线观看| 在线欧美三级| 日韩手机在线观看| 国内视频精品| 国产人妻人伦精品| 日韩精品1区| 蜜臀av性久久久久蜜臀av麻豆| 精品精品国产毛片在线看| 少妇久久久久| 最新黄色片网站| 欧美优质美女网站| 色av成人天堂桃色av| 国产一区二区三区奇米久涩| 夜夜躁狠狠躁日日躁2021日韩| 国产毛片久久久久| 综合伊思人在钱三区| 免费毛片a线观看| 日本v片在线高清不卡在线观看| 毛片av免费观看| 中文在线一区二区三区| 久久久久亚洲精品| 国产精品乱码一区二区三区软件| 日本韩国欧美在线| 国产高清精品软件丝瓜软件| 日本久久精品一区二区| 日韩动漫一区| 一本一本大道香蕉久在线精品| 亚洲视频精品在线观看| av在线播放观看| 美女网站免费看| 91亚洲人成网污www| 四虎精品在线观看| 国产偷国产偷亚洲高清97cao| 亚洲久本草在线中文字幕| 亚洲综合成人av| 91香蕉视频免费看| 国产在线拍揄自揄拍| 国产精品日韩成人| 一区二区三区在线观看欧美| 美女久久久久久久| 国产高清不卡无码视频| 精品毛片乱码1区2区3区| 多人啪嗒啪嗒在线观看免费| 秋霞国产午夜精品免费视频| 潘金莲一级黄色片| jvid福利写真一区二区三区| 农村妇女精品一区二区| 久草视频在线免费看| 成人免费视频入口| 欧美精品一区二区久久久| 日本不卡影院| 亚洲午夜羞羞片| 黄色影视在线观看| 日本在线播放视频| 国产日韩欧美视频在线| 亚洲国产专区校园欧美| 国产精品视频一区二区免费不卡| 视频一区视频二区中文字幕| 欧美日本三区| 激情综合网av| 最新中文字幕在线观看视频| 18禁网站免费无遮挡无码中文| 国产精品一品二区三区的使用体验| 久久久国产精品视频| 亚洲一区中文日韩| 久久久亚洲欧洲日产国码αv| 伊人75在线| 久久久精品国产网站| 久草视频免费在线| 久久精品女人天堂| 黄色一级大片在线免费看产| 男女羞羞电影免费观看| 在线播放免费视频| 777米奇影视第四色| 欧美日韩看看2015永久免费| 欧美片网站免费| 亚洲 欧美 视频| 自拍一级黄色片| 成人日韩在线电影| av美女在线| 亚洲一区二区三区| 中文字幕巨乱亚洲| 日本不卡不卡| 亚洲夜晚福利在线观看| 日韩精品一级中文字幕精品视频免费观看| 亚洲免费在线视频一区 二区| 欧美激情护士| 精品成a人在线观看| 国产精品久久久av久久久| 电影一区二区三| 欧美日本在线视频中文字字幕| 理论电影国产精品| 欧美成人福利在线观看| wwwxxxx在线观看| 欧美在线观看18| 欧美另类网站| 精品久久一区二区| 欧美国产精品va在线观看| 久久精品这里只有精品| 99精品视频在线| 超碰人人爱人人| 国产剧情一区| 亚洲一卡二卡在线观看| 精品国产伦理网| 欧美大片欧美激情性色a∨久久| 黄页网站大全一区二区| 国内精品久久久久久影院8f| 天天添天天操| 久久久www成人免费毛片麻豆| 欧美成人a交片免费看| 亚洲全黄一级网站| 久久国产香蕉视频| 久久艹中文字幕| 五月激情久久久| 久热中文字幕精品视频在线| 无码精品一区二区三区在线| 独立日3在线观看完整版| 欧美精选一区| 一插菊花综合| 亚洲人视频在线| 精品电影一区| 欧美三级午夜理伦三级老人| 无码精品国产一区二区三区免费| 日韩视频在线观看| 玖玖精品国产| 成久久久网站| jizz在线播放| 九九这里只有精品视频| 青青草成人在线| 91电影在线播放| 国产一区二区三区蝌蚪| 色先锋av男人资源先锋影院| 嫩草香蕉在线91一二三区| 亚洲最大的网站| 中文字幕高清一区| 99re66热这里只有精品4| 国产精品国产亚洲伊人久久| 三上悠亚免费在线观看| 91极品美女在线| 久久香蕉一区| 亚洲午夜一二三区视频| 国产精品无码白浆高潮| 国产免费一区二区| 91精品国产综合久久国产大片| 91国内精品野花午夜精品| 无码人妻熟妇av又粗又大| 十大黄色软件免费看| 亚洲av综合色区无码另类小说| 亚州av一区二区| 成年人黄视频在线观看| 欧美精品电影在线| 91最新在线免费观看| 欧美性色黄大片手机版| 久久精品国产亚洲av香蕉| 欧美中文字幕亚洲一区二区va在线| 久久综合九色综合97婷婷女人| 中文区中文字幕免费看| 在线精品播放av| 免费看的www视频网站视频| 国产精品久久久久久久av电影| 久久精品五月| 亚洲美女电影在线| xxxx18国产| 在线免费观看麻豆| 黄色的电影在线-骚虎影院-骚虎视频| 波多野结衣中文字幕在线播放| 中文字幕亚洲免费| 欧美激情20| 在线看片不卡| 悠悠色在线精品| 97视频在线观看免费高清完整版在线观看| 一区不卡视频| 97涩在线观看视频| 免费看成人哺乳视频网站| 男人天堂久久久| 成人久久一区二区| 国产精品久久久久无码av色戒| 搜成人激情视频| 国产一区二区亚洲| 日韩一区二区三区四区区区| 黄色高清在线观看| 91精品免费| 精品欧美激情在线观看| 91久久国产综合| 2023欧美最顶级a∨艳星| 91成人国产在线观看| 91热这里只有精品| 要久久电视剧全集免费| 中文字幕一区日韩精品欧美| 第一中文字幕在线| 国产精品欧美大片| 免费看美女视频在线网站|