1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        手把手教你如何繪制自己的跳舞詞云圖~

        共 3677字,需瀏覽 8分鐘

         ·

        2022-02-22 18:38

        點(diǎn)擊上方“Python爬蟲(chóng)與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書(shū)籍”即可獲贈(zèng)Python從入門(mén)到進(jìn)階共10本電子書(shū)

        卻嫌脂粉污顏色,淡掃蛾眉朝至尊。
        大家好,我是志斌~


        上次做了一個(gè)跳舞的詞云圖,大家感覺(jué)很不錯(cuò),都想學(xué)習(xí)一下做法,志斌今天就來(lái)跟大家分享一下如何制作跳舞的詞云圖。



        01

        下載視頻


        首先我們要先準(zhǔn)備一個(gè)熱舞視頻,從哪里下載的都可以,我是用You-Get從B站上下載的,命令如下:

        you-get url



        you-get是第三方庫(kù),需要讀者用pip進(jìn)行手動(dòng)安裝,它的更多用法可以看看這篇文章下載全網(wǎng)音視頻資源的神器—You-get。


        02

        分割視頻


        下載好視頻后,我們要對(duì)其進(jìn)行分割處理,將其變成一張一張的圖片,代碼如下:

        import cv2
        vc = cv2.VideoCapture(r'美女跳舞視頻.flv') # 讀取視頻文件
        n = 1 # 計(jì)數(shù)
        a, b = vc.read()
        timeF = 10 # 視頻幀計(jì)數(shù)間隔頻率
        num = 0
        while a: # 循環(huán)讀取視頻幀
        a, b = vc.read()
        if (n % timeF == 0): # 每隔timeF幀進(jìn)行存儲(chǔ)操作
        num += 1
        cv2.imwrite(f'{num}.jpg',b) # 存儲(chǔ)為圖像
        n += 1
        cv2.waitKey(1)
        vc.release()


        讓我們來(lái)看看效果:


        03

        人物摳像


        視頻現(xiàn)在已經(jīng)分割成一張一張的圖片了,我們要把人物給摳出來(lái),這樣方便我們進(jìn)行詞云圖繪制。


        這里我是借用的百度API進(jìn)行人物摳像,下面我們來(lái)看一下如何使用百度API。


        首先,我們先打開(kāi)百度AI界面,然后點(diǎn)擊控制臺(tái)。



        跳轉(zhuǎn)到登陸界面后,輸入賬號(hào)密碼后,跳轉(zhuǎn)到管理界面,此時(shí)我們點(diǎn)擊人體分析。進(jìn)入到人體分析應(yīng)用界面。


        然后創(chuàng)建一個(gè)應(yīng)用(如已創(chuàng)建好,就點(diǎn)擊管理應(yīng)用)。


        創(chuàng)建好后,進(jìn)入到應(yīng)用列表中,記下來(lái)‘AppID’、‘API Key’、‘Secret Key’這三個(gè)參數(shù)的值。在后面對(duì)API進(jìn)行調(diào)用的時(shí)候需要用到這三個(gè)參數(shù)。


        接下來(lái),我們就可以開(kāi)始調(diào)用API了,代碼如下:

        """ 讀取圖片 """
        def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
        return fp.read()image = get_file_content('example.jpg')
        """ 調(diào)用人像分割 """
        client.bodySeg(image);
        """ 如果有可選參數(shù) """
        options = {}
        options["type"] = "labelmap"
        """ 帶參數(shù)調(diào)用人像分割 """
        client.bodySeg(image, options)


        我們來(lái)看一下效果:

        (來(lái)源:百度AI)


        我們使用的代碼如下:

        APP_ID = '你的APP_ID'
        API_KEY = '你的API_KEY'
        SECRET_KEY = '你的SECRET_KEY'
        client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
        path = r'美女跳舞視頻'
        img_files = os.listdir(r'img')
        print(img_files)
        for num in range(2, len(img_files) + 1):
        img = f'img_{num}.jpg'
        img_1 = cv2.imread(img)
        height, width = img_1.shape[:2]
        with open(img, 'rb') as fp:
        img_info = fp.read()
        seg_res = client.bodySeg(img_info)
        labelmap = base64.b64decode(seg_res['labelmap'])
        nparr = np.frombuffer(labelmap, np.uint8)
        labelimg = cv2.imdecode(nparr, 1)
        labelimg = cv2.resize(labelimg, (width, height), interpolation = cv2.INTER_NEAREST)
        new_img = np.where(labelimg == 1, 255, labelimg)
        mask_name = path + 'mask_{}.png'.format(num)
        cv2.imwrite(mask_name,new_img)


        讓我們來(lái)看看效果,感覺(jué)還不錯(cuò):


        04

        詞云繪制


        現(xiàn)在人物也出來(lái)了,我們可以開(kāi)始進(jìn)行詞云的繪制了,這里我們使用的是上次從抖音視頻上爬取下來(lái)的評(píng)論,讀者也可以替換成自己的評(píng)論,代碼如下:

        for num in range(1,23):
        with open("comment.txt", 'r') as f:
        job_title_1 = f.read()
        contents_cut_job_title = jieba.cut(job_title_1)
        contents_list_job_title = " ".join(contents_cut_job_title)
        img = f'mask_{num}.png'
        mask = 255 - np.array(Image.open(img)) # 相互轉(zhuǎn)化
        wc = WordCloud(stopwords=STOPWORDS.add("一個(gè)"), collocations=False,
        background_color="white",
        font_path=r"K:\msyh.ttc",
        width=400, height=300, random_state=42,
        mask=mask
        )
        wc.generate(contents_list_job_title)
        wc.to_file(f"ciyun_{num}.png")


        讓我們來(lái)看看效果:


        05

        合成視頻


        詞云圖做好了,我們現(xiàn)在要將他們合成一個(gè)視頻,這樣就可以實(shí)現(xiàn)其跳舞的特效啦,代碼如下:

        import cv2
        video_address = 'tiaowu.mp4' # 輸出視頻的保存路徑
        fps = 20 # 幀率,可以調(diào)整
        img_size = (1080, 1920) # 圖片的大小
        fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
        videoWriter = cv2.VideoWriter(video_address , fourcc, fps, img_size)
        for num in range(1,23):
        img_path = f'ciyun_{num}.png'
        frame = cv2.resize(cv2.imread(img_path), img_size)
        videoWriter.write(frame) # 合成視頻
        videoWriter.release()


        來(lái)看一下效果:


        06

        小結(jié)


        1. 本文詳細(xì)介紹了如何制作一款跳舞的詞云圖,有興趣的讀者可以嘗試自己動(dòng)手實(shí)驗(yàn)一下。

        2. 本文繪制詞云圖的操作是最基本的,其實(shí)還可以更優(yōu),有興趣的讀者可以看看這篇文章基于微博評(píng)論的文本情感分析與關(guān)鍵詞提取的實(shí)戰(zhàn)案例~。

        3. 讓詞云圖繪制在人像中,要讓PIL.Image與numpy.array之間進(jìn)行相互轉(zhuǎn)換。

        4. 本文僅供學(xué)習(xí)參考,不做它用。

        小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

        -------------------?End?-------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

        萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

        /今日留言主題/

        隨便說(shuō)一兩句吧~

        瀏覽 79
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美一级婬片A片免费播放绣春 | 国产九九九九九九 | 天天干狠狠 | 亚洲综合一页 | 国产特黄无码A片免费看 | 青青草原网 | 无码在线高清 | 女同学让我爽了一夜 | 精品国产一区二区三区不卡蜜臂 | 国产内射久久 |