最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程實(shí)現(xiàn)小姐姐跳舞并生成詞云視頻示例

 更新時間:2021年10月08日 11:58:14   作者:小張Python  
本文用Python做了一個詞云視頻,以另一種角度來看小姐姐跳舞視頻左半部分是小姐姐跳舞視頻,右半部分是根據(jù)動作生成的的詞云視頻,有需要的朋友可以借鑒參考下

Python做了一個詞云視頻,以另一種角度來看小姐姐跳舞

制作過程分為以下幾個部分

1、視頻下載

首先需要下載一個小姐姐跳舞的視頻,這里我用的是 you-get 工具,可借助 Python 的 pip 命令進(jìn)行安裝

pip install you-get

you-get 支持下載平臺包括:Youtube、Blili、TED、騰訊、優(yōu)酷、愛奇藝(涵蓋所有視頻平臺下載鏈接),

以 youtube 視頻為例,you-get 下載命令

you-get -o ~/Videos(存放視頻路徑) -O zoo.webm(視頻命名) 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

圖片

這里通過 os 模塊來實(shí)現(xiàn) you-get 下載命令,使用時傳入三個參數(shù)即可:

1,視頻鏈接,

2,要存放視頻的文件路徑;

3,視頻命名;

def download(video_url,save_path,video_name):
   '''
   youget 下載視頻
   :param video_url:視頻鏈接
   :param save_path: 保存路徑
   :param video_name: 視頻命名
   :return:
   '''
   cmd = 'you-get -o {} -O {} {}'.format(save_path,video_name,video_url)
   res = os.popen(cmd,)
   res.encoding = 'utf-8'
   print(res.read())# 打印輸出

關(guān)于 you-get 更多用法, 可參考官網(wǎng),里面關(guān)于用法介紹的非常詳細(xì):

https://you-get.org/#getting-started

圖片

2、B 站彈幕下載

做詞云圖需要有文本數(shù)據(jù)支持,這里選取 B 站彈幕為素材;關(guān)于 B 站視頻彈幕下載方式,這里一個快捷方法,用 requests 訪問指定視頻的 API 接口,就能得到該視頻下的全部彈幕

http://comment.bilibili.com/{cid}.xml # cid 為B站視頻的cid 編號

但 API 接口的構(gòu)造,需要知道視頻的 cid 編號

B站視頻 cid 編號獲取方式:

F12打開開發(fā)者模式->NetWork->XHR->v2?cid=… 鏈接 ,該網(wǎng)頁鏈接中有一個”cid=一串?dāng)?shù)字“ 的字符串,其中等號后面的連續(xù)數(shù)字就是該視頻的 cid 編號

圖片

以上面視頻為例,291424805 就是這個視頻的 cid 編號,

有了 cid 之后,通過 requests 請求 API 接口,就能獲取到里面的彈幕數(shù)據(jù)

http://comment.bilibili.com/291424805.xml

圖片

圖片

def download_danmu():
    '''彈幕下載并存儲'''
    cid = '141367679'# video_id
    url = 'http://comment.bilibili.com/{}.xml'.format(cid)
    f = open('danmu.txt','w+',encoding='utf-8') #打開 txt 文件
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text,'lxml')
    items = soup.find_all('d')# 找到 d 標(biāo)簽
    for item in items:
        text = item.text
        print('---------------------------------'*10)
        print(text)
        seg_list = jieba.cut(text,cut_all =True)# 對字符串進(jìn)行分詞處理,方便后面制作詞云圖
        for j in seg_list:
            print(j)
            f.write(j)
            f.write('\n')
    f.close()

3、視頻切幀,人像分割

下載到視頻之后,先把視頻拆分成一幀一幀圖像;

vc = cv2.VideoCapture(video_path)
    c =0
    if vc.isOpened():
        rval,frame = vc.read()# 讀取視頻幀
    else:
        rval=False
    while rval:
        rval,frame = vc.read()# 讀取每一視頻幀,并保存至圖片中

        cv2.imwrite(os.path.join(Pic_path,'{}.jpg'.format(c)),frame)
        c += 1
        print('第 {} 張圖片存放成功!'.format(c))

圖片

對每一幀中的小姐姐進(jìn)行識別提取,也就是人像分割,這里借助了百度 API 接口,

APP_ID = "23633750"
    API_KEY = 'uqnHjMZfChbDHvPqWgjeZHCR'
    SECRET_KEY = '************************************'
    client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
    # 文件夾
    jpg_file = os.listdir(jpg_path)
    # 要保存的文件夾
    for i in jpg_file:
        open_file = os.path.join(jpg_path,i)
        save_file = os.path.join(save_path,i)
        if not os.path.exists(save_file):#文件不存在時,進(jìn)行下步操作
            img = cv2.imread(open_file)  # 獲取圖像尺寸
            height, width, _ = img.shape
            if crop_path:# 若Crop_path 不為 None,則不進(jìn)行裁剪
                crop_file = os.path.join(crop_path,i)
                img = img[100:-1,300:-400] #圖片太大,對圖像進(jìn)行裁剪里面參數(shù)根據(jù)自己情況設(shè)定
                cv2.imwrite(crop_file,img)
                image= get_file_content(crop_file)
            else:

                image = get_file_content(open_file)
            res = client.bodySeg(image)#調(diào)用百度API 對人像進(jìn)行分割
            labelmap = base64.b64decode(res['labelmap'])
            labelimg = np.frombuffer(labelmap,np.uint8)# 轉(zhuǎn)化為np數(shù)組 0-255
            labelimg = cv2.imdecode(labelimg,1)
            labelimg = cv2.resize(labelimg,(width,height),interpolation=cv2.INTER_NEAREST)
            img_new = np.where(labelimg==1,255,labelimg)# 將 1 轉(zhuǎn)化為 255
            cv2.imwrite(save_file,img_new)
            print(save_file,'save successfully')

將含有人像的圖像轉(zhuǎn)化為二值化圖像,前景為人物,其余部分為背景

圖片

API 使用之前需要用自己賬號在百度智能云平臺創(chuàng)建一個 人體分析 應(yīng)用,里面需要三個參數(shù):ID、AK、SK

圖片

關(guān)于百度 API 使用方法,可參考官方文檔資料

圖片

4、對分割后的圖像制作詞云圖

根據(jù)步驟 3 中得到了小姐姐 人像 Mask,

圖片

借助 wordcloud 詞云庫和采集到的彈幕信息,對每一張二值化圖像繪制詞云圖(在制作之前,請確保每一張都是二值化圖像,全部為黑色像素圖像需要剔除)

圖片

word_list = []
    with open('danmu.txt',encoding='utf-8') as f:
        con = f.read().split('\n')# 讀取txt文本詞云文本
        for i in con:
            if re.findall('[\u4e00-\u9fa5]+', str(i), re.S): #去除無中文的詞頻
                word_list.append(i)
    for i in os.listdir(mask_path):
        open_file = os.path.join(mask_path,i)
        save_file = os.path.join(cloud_path,i)
        if not os.path.exists(save_file):
            # 隨機(jī)索引前 start 頻率詞
            start = random.randint(0, 15)
            word_counts = collections.Counter(word_list)
            word_counts = dict(word_counts.most_common()[start:])
            background = 255- np.array(Image.open(open_file))
            wc =WordCloud(
                background_color='black',
                max_words=500,
                mask=background,
                mode = 'RGB',
                font_path ="D:/Data/fonts/HGXK_CNKI.ttf",# 設(shè)置字體路徑,用于設(shè)置中文,

            ).generate_from_frequencies(word_counts)
            wc.to_file(save_file)
            print(save_file,'Save Sucessfully!')

5、圖片拼接,合成視頻

詞云圖全部生成完畢之后,如果一張一張圖像看肯定沒意思,如果把處理后的詞云圖合成視頻會更酷一點(diǎn)!

為了視頻前后對比效果這里我多加了一個步驟,在合并之前先對原圖和詞云圖進(jìn)行拼接,合成效果如下:

圖片

 num_list = [int(str(i).split('.')[0]) for i in os.listdir(origin_path)]
    fps = 24# 視頻幀率,越大越流暢
    height,width,_=cv2.imread(os.path.join(origin_path,'{}.jpg'.format(num_list[0]))).shape # 視頻高度和寬度
    width = width*2
    # 創(chuàng)建一個寫入操作;
    video_writer = cv2.VideoWriter(video_path,cv2.VideoWriter_fourcc(*'mp4v'),fps,(width,height))
    for i in sorted(num_list):
        i = '{}.jpg'.format(i)
        ori_jpg = os.path.join(origin_path,str(i))
        word_jpg = os.path.join(wordart_path,str(i))
        # com_jpg = os.path.join(Composite_path,str(i))
        ori_arr = cv2.imread(ori_jpg)
        word_arr = cv2.imread(word_jpg)
        # 利用 Numpy 進(jìn)行拼接
        com_arr = np.hstack((ori_arr,word_arr))
        # cv2.imwrite(com_jpg,com_arr)# 合成圖保存
        video_writer.write(com_arr) # 將每一幀畫面寫入視頻流中
        print("{} Save Sucessfully---------".format(ori_jpg))

再加上背景音樂,視頻又能提升一個檔次~

最后

關(guān)于視頻中的素材,特此聲明

彈幕取自B站 Up 主 半佛仙人《【半佛】你知道奶茶加盟到底有多坑人嗎?》

小姐姐跳舞視頻取自Youtube Channel Lilifilm Official 《LILI's FILM #3 - LISA Dance Performance Video》

最后,感謝大家的閱讀,我們下期見~

更多關(guān)于Python實(shí)現(xiàn)跳舞詞云視頻的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python利用glob庫實(shí)現(xiàn)輕松應(yīng)對文件和目錄管理

    Python利用glob庫實(shí)現(xiàn)輕松應(yīng)對文件和目錄管理

    Python提供了glob庫,它允許我們根據(jù)特定模式匹配文件和目錄,本文將詳細(xì)介紹glob庫的用法,并通過實(shí)例演示它的各種功能,需要的可以了解一下
    2023-07-07
  • Python拼接字符串的7種方法總結(jié)

    Python拼接字符串的7種方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Python拼接字符串的7種方法,分別是來自C語言的%方式、format()拼接方式、() 類似元組方式、面向?qū)ο竽0迤唇?、join()拼接方式以及f-string方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-11-11
  • Python+OpenCV實(shí)現(xiàn)圖像的全景拼接

    Python+OpenCV實(shí)現(xiàn)圖像的全景拼接

    這篇文章主要為大家詳細(xì)介紹了Python+OpenCV實(shí)現(xiàn)圖像的全景拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python去重,一個由dict組成的list的去重示例

    python去重,一個由dict組成的list的去重示例

    今天小編就為大家分享一篇python去重,一個由dict組成的list的去重示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python基礎(chǔ)教程之基本內(nèi)置數(shù)據(jù)類型介紹

    python基礎(chǔ)教程之基本內(nèi)置數(shù)據(jù)類型介紹

    在Python程序中,每個數(shù)據(jù)都是對像,每個對像都有自己的一個類型。不同類型有不同的操作方法,使用內(nèi)置數(shù)據(jù)類型獨(dú)有的操作方法,可以更快的完成很多工作
    2014-02-02
  • python爬蟲入門教程--優(yōu)雅的HTTP庫requests(二)

    python爬蟲入門教程--優(yōu)雅的HTTP庫requests(二)

    requests 實(shí)現(xiàn)了 HTTP 協(xié)議中絕大部分功能,它提供的功能包括 Keep-Alive、連接池、Cookie持久化、內(nèi)容自動解壓、HTTP代理、SSL認(rèn)證等很多特性,下面這篇文章主要給大家介紹了python爬蟲入門中關(guān)于優(yōu)雅的HTTP庫requests的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • python3實(shí)現(xiàn)無權(quán)最短路徑的方法

    python3實(shí)現(xiàn)無權(quán)最短路徑的方法

    這篇文章主要介紹了python3實(shí)現(xiàn)無權(quán)最短路徑的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Python解析多幀dicom數(shù)據(jù)詳解

    Python解析多幀dicom數(shù)據(jù)詳解

    今天小編就為大家分享一篇Python解析多幀dicom數(shù)據(jù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python字符串格式化%s%d%f詳解

    Python字符串格式化%s%d%f詳解

    這篇文章主要介紹了Python字符串格式化%s%d%f詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python讀文件保存到字典,修改字典并寫入新文件的實(shí)例

    python讀文件保存到字典,修改字典并寫入新文件的實(shí)例

    下面小編就為大家分享一篇python讀文件保存到字典,修改字典并寫入新文件的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

唐海县| 兴宁市| 临泽县| 武安市| 尉犁县| 封丘县| 磐安县| 岗巴县| 南召县| 邢台县| 平和县| 肥乡县| 安吉县| 广元市| 和政县| 平阳县| 云龙县| 铜川市| 扎兰屯市| 万宁市| 仁布县| 吴忠市| 运城市| 清徐县| 板桥市| 桓仁| 永济市| 中超| 海淀区| 铜川市| 株洲县| 丹阳市| 琼结县| 西峡县| 承德县| 叶城县| 辰溪县| 武强县| 抚州市| 榆中县| 芜湖县|