日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

超不清视频播放器-用Python将视频转成字符

發布時間:2025/3/18 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超不清视频播放器-用Python将视频转成字符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天分享的這段代碼,看起來沒啥實際用處,而且有些反潮流,因為現如今大家看視頻都追求更高分辨率的超清畫質,而我們這個,是 一個“超不清”的視頻播放器

在控制臺里播放視頻,用字符來表示畫面

不過我覺得它至少可以有三個作用:1.用來 練習視頻和圖像處理 的編程開發;2. 在沒有圖形界面的服務器上播放視頻 (雖然效果不咋地);3.作為一種獨特的 藝術風格化 處理

程序的原理其實很簡單,關鍵是你要理解 計算機中一張圖像的組成:一堆像素點。 我們平常說的 1920*1080 之類的分辨率,也就是指這個像素點的多少。我們想做成字符畫,也就是考慮如何用不同的字符來表示一個像素。

通常 一個像素點由3個0~255的值表示 ,分別表示 紅、綠、藍三種顏色值 ,值越大表示顏色越深。但字符畫是沒有顏色的,所以需要將圖像 轉成灰度圖 ,這樣就可以跟一組從深到淺的字符形成一種對應關系。比如深的點就是 @,淺色的點就是 .。

一幅圖像全部轉成字符序列后,就可以直接在控制臺輸出了。對于一個視頻來說,只需要將每一幀都轉換后輸出,并按照一定的時間間隔清屏、輸出下一幀,即可達到我們的需要的效果。

轉換后的效果:

代碼:

# coding: utf8 import cv2 as cv import os import time # 替換字符列表 ascii_char = list(r"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") char_len = len(ascii_char) # 加載視頻 cap = cv.VideoCapture('video.mp4') while True:# 讀取視頻每一幀hasFrame, frame = cap.read()if not hasFrame:break# 視頻長寬width = frame.shape[0]height = frame.shape[1]# 轉灰度圖img_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)# 縮小圖片并調整長寬比img_resize = cv.resize(img_gray, (int(width / 10), int(height / 10)))text = ''# 遍歷圖片中的像素for row in img_resize:for pixel in row:# 根據像素值,選取對應的字符text += ascii_char[int(pixel / 256 * char_len)]text += '\n'# 清屏os.system('cls') # mac是'clear'# 輸出生成的字符方陣print(text)# 適當暫停一下time.sleep(0.03)

代碼不長,稍微解釋下其中幾處:

  • ascii_char 這個字符序列并不是必須這樣,只要大致上滿足其中的 字符看起來從深到淺 即可,字符越多越準確,效果就越好。
  • 讀取視頻使用了 opencv-python ,并直接用它提供的方法轉了灰度圖,在之前的文章中也有過介紹:OpenCV-Python,計算機視覺開發利器
  • resize 這一步比較重要,因為有的視頻分辨率很高,直接一個像素轉一個字符的話量太大,所以 先縮小圖片 。另一個原因是字符一般都不是正方形,所以在 圖片長寬比上要做一定的調整 ,這樣最終效果比較好。(實際中要根據你自己控制臺中的字體效果來調整縮放比例)
  • ascii_char[int(pixel / 256 * char_len)] 是整個轉換的核心,因為一個像素的顏色范圍是 0~255,通過 pixel / 256 * char_len 可以 將一個像素值對應于字符序列中灰度相當的字符
  • 關于輸出,有幾個值得注意的點: 輸出一幀前需要清屏 ,不同平臺命令有區別; 時間間隔、控制臺的字體大小、縮放比例都要根據實際情況作調整 ;如果計算時間過長、刷新太慢而屏幕閃爍,可以考慮進一步縮小圖片,或者先將所以幀轉換完畢后再統一輸出。
  • 最后請各位欣賞最終的視頻效果:

    《極樂凈土》字符版 https://www.zhihu.com/video/1063899647084568576

    文中完整代碼已上傳,包括 轉單張圖片轉視頻 兩份代碼。
    獲取地址請在公眾號“ Crossin的編程教室 ”里回復關鍵字 播放器

    ════

    其他文章及回答:

    如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計算機視覺

    歡迎搜索及關注公眾號: Crossin的編程教室

    總結

    以上是生活随笔為你收集整理的超不清视频播放器-用Python将视频转成字符的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。