20行Python程式碼教你讓影片字元化
我們經常在B站上看到一些字元鬼畜影片,主要就是將一個影片轉換成字元的樣子展現出來。看起來是非常高階,但是實際實現起來確實非常簡單,我們只需要接觸opencv模組,就能很快的實現影片字元化。
OpenCV的安裝及圖片讀取
在Python中我們只需要用pip安裝即可,我們在控制檯執行下列語句:
安裝完成就可以開始使用。我們先讀取一個圖片:
首先我們使用cv2.imread方法讀取圖片,該方法返回一個ndarray物件。然後呼叫imshow方法顯示影像,呼叫後會出現一個視窗,因為這個視窗只會出現一瞬間,所以我們呼叫waitKey等待輸入,傳入0表示無限等待。因為opencv是使用c++編寫的,所以我們需要銷燬記憶體。
OpenCV中的一些基礎操作
我們將影片字元化的思路就是先將影片轉換為一幀一幀的影像,然後對影像進行字元化處理,最後展示出來就是字元影片的效果了。在我們生成字元畫之前,我們還要看一些OpenCV的操作。
(1)灰度轉換
灰度處理是一個非常常用的操作,我們原始的圖片是有BGR三個圖層(在OpenCV中,影像是以BGR形式讀取)。我們進行灰度處理直觀上看就是將圖片變成黑白,而本質上是將圖片的三個圖層透過計算,變成一個圖層。而這種計算是不需要我們做的,我們只需要呼叫OpenCV中的函式即可:
效果圖和原圖對比如下:
左邊為原圖,右邊為灰度轉換後的影像。
(2)改變圖片大小
因為字元化後影像會比較大,所以我們需要先縮小圖片,我們呼叫cv2.resize即可改變影像大小:
(3)逐幀讀取影片
我們可以透過VideoCapture讀取影片,然後呼叫其中的方法讀取每一幀。
有了上面的操作,我們就可以開始我們下一步的工作了。
圖片字元化
對於只有一個通道的圖片,我們可以把它當成一個矩形,這個矩形最小單位就是一個畫素。而字元化的過程就是用字元替代畫素點的過程。所以我們要遍歷影像的每個畫素點,但是我們應該用什麼字元取代呢?我們顏色有一個參照表,而opencv將這個參數列切割成256份,代表不同的程度,我們也可以做一個參照表,不過表中的內容不是顏色,而是字元。
上圖為顏色表,我們可以使顏色表和字元表建立對映關係。假如字元表如下:mqpka89045321@#$%^&*()_=||||}我們可以得到下列公式:
經過變換可以求得相應顏色對應字元表中的字元:
這個公式不理解也沒關係,只需要會用即可。下面就是我們完整的程式碼了:
生成如下字元畫:
因為尺寸比較小的關係,看出來的效果不是很好,我們調節好大小就好了。
影片轉字元
我們知道圖片轉字元,自然影片轉字元就不是什麼問題了,我們只需要在逐幀讀取中執行圖片字元化操作即可。
這樣我們就會每個5毫秒執行一幀畫面,在我們使用pycharm執行時,會發現並沒有執行清屏操作,所以我們需要到命令列執行。最終效果就是我們的字元影片了
在選取字元表時我們需要注意主體的顏色,如果主體顏色較淺,則字元表的尾部應該為一些複雜字元,如:$%#@&。字元表頭部為一些簡單字元,如:-|/等。如果主體顏色較深,而背景顏色較淺,則反之。當然這沒有唯一的標準,大家可以慢慢調節。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2773265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓 Python 程式碼執行更快的技巧Python
- 35行python程式碼教你向ta說情話Python
- Java效能優化:教你提高程式碼執行的效率Java優化
- 讓Python程式碼更快執行的 5 種方法Python
- Python之抖音快手程式碼舞--字元舞Python字元
- 不給程式碼寫文件,讓程式碼文件化
- 3個例子教你重構 Python 程式碼Python
- 6 個例子教你重構 Python 程式碼Python
- 短影片同城小程式讓這些行業成功轉型行業
- 藉助Python 函式進行模組化程式碼Python函式
- 200 行 Python 程式碼做個換臉程式(附原始碼)Python原始碼
- 500行程式碼,教你用python寫個微信飛機大戰行程Python
- 1.3.0 Python 字元編碼Python字元
- 20 行 Python 程式碼實現加密通訊Python加密
- 如何用200行Python程式碼“換臉”Python
- 教你閱讀 Python 開源專案程式碼Python
- 利用psyco讓Python程式執行更快Python
- 小 200 行 Python 程式碼做了一個換臉程式Python
- 手把手教你如何進行 程式碼版本控制
- Python字元編碼詳解Python字元
- Python技巧-教你用Python告白小姐姐(附程式碼)Python
- 如何讓sublime編輯器執行python程式?Python
- 讓你的程式碼自動格式化
- 一行 Python 程式碼Python
- 手把手教你用Python進行迴歸(附程式碼、學習資料)Python
- 40行Python程式碼,實現卷積特徵視覺化Python卷積特徵視覺化
- 只有20行Javascript程式碼!手把手教你寫一個頁面模板引擎JavaScript
- 改變一個字元讓Go程式快42%字元Go
- 讓你的 Python 程式碼優雅又地道Python
- 如何讓你的Python程式碼更加pythonic ?Python
- 替代 for 迴圈,讓 Python 程式碼更 pythonic !Python
- 30個python教你學會優雅的寫程式碼Python
- 80行Python程式碼搞定全國區劃程式碼Python
- 三行Python程式碼,讓你的資料處理指令碼快別人4倍Python指令碼
- Python通用程式設計 - 第四章:字元編碼Python程式設計字元
- 短影片程式原始碼,怎麼進行短影片稽核機制的架構原始碼架構
- Python 程式碼效能優化技巧Python優化
- python教程3.3:字元和編碼Python字元