电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

20行Python代碼實(shí)現(xiàn)視頻字符化功能

瀏覽:5日期:2022-07-30 10:56:31

我們經(jīng)常在B站上看到一些字符鬼畜視頻,主要就是將一個(gè)視頻轉(zhuǎn)換成字符的樣子展現(xiàn)出來。看起來是非常高端,但是實(shí)際實(shí)現(xiàn)起來確是非常簡單,我們只需要接觸opencv模塊,就能很快的實(shí)現(xiàn)視頻字符化。但是在此之前,我們先看看我們實(shí)現(xiàn)的效果是怎樣的:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

上面就是截取的一部分效果圖,下面開始進(jìn)入我們的主題。

一、OpenCV的安裝及圖片讀取

在Python中我們只需要用pip安裝即可,我們在控制臺執(zhí)行下列語句:

pip install opencv-python

安裝完成就可以開始使用。我們先讀取一個(gè)圖片:

import cv2im = cv2.imread(’jljt’)# 讀取圖片cv2.imshow(’im’, im)# 顯示圖片cv2.waitKey(0)# 等待鍵盤輸入cv2.destroyAllWindows()# 銷毀內(nèi)存

首先我們使用cv2.imread方法讀取圖片,該方法返回一個(gè)ndarray對象。然后調(diào)用imshow方法顯示圖像,調(diào)用后會出現(xiàn)一個(gè)窗口,因?yàn)檫@個(gè)窗口只會出現(xiàn)一瞬間,所以我們調(diào)用waitKey等待輸入,傳入0表示無限等待。因?yàn)閛pencv是使用c++編寫的,所以我們需要銷毀內(nèi)存。

二、OpenCV中的一些基礎(chǔ)操作

我們將視頻字符化的思路就是先將視頻轉(zhuǎn)換為一幀一幀的圖像,然后對圖像進(jìn)行字符化處理,最后展示出來就是字符視頻的效果了。在我們生成字符畫之前,我們還要看一些OpenCV的操作。

(1)灰度轉(zhuǎn)換

灰度處理是一個(gè)非常常用的操作,我們原始的圖片是有BGR三個(gè)圖層(在OpenCV中,圖像是以BGR形式讀取)。我們進(jìn)行灰度處理直觀上看就是將圖片變成黑白,而本質(zhì)上是將圖片的三個(gè)圖層通過計(jì)算,變成一個(gè)圖層。而這種計(jì)算是不需要我們做的,我們只需要調(diào)用OpenCV中的函數(shù)即可:

import cv2# 讀取圖片im = cv2.imread(’jljt.jpg’)# 灰度轉(zhuǎn)換grey = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)

效果圖和原圖對比如下:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

左邊為原圖,右邊為灰度轉(zhuǎn)換后的圖像。

(3)改變圖片大小

因?yàn)樽址髨D像會比較大,所以我們需要先縮小圖片,我們調(diào)用cv2.resize即可改變圖像大小:

import cv2# 讀取圖像im = cv2.imread(’jljt.png’)# 改變圖像大小re = cv2.resize(im, (100, 40))cv2.imshow(’11’, re)cv2.waitKey(0)cv2.destroyAllWindows()

(2)逐幀讀取視頻

我們可以通過VideoCapture讀取視頻,然后調(diào)用其中的方法讀取每一幀。

import cv2# 讀取視頻video = cv2.VideoCapture(’jljt.mp4’)# 讀取幀,該方法返回兩個(gè)參數(shù),第一個(gè)為是否還有下一幀,第二個(gè)為幀的ndarray對象ret, frame = video.read()while ret: # 循環(huán)讀取幀 ret, frame = video.read()

有了上面的操作,我們就可以開始我們下一步的工作了。

三、圖片字符化

對于只有一個(gè)通道的圖片,我們可以把它當(dāng)成一個(gè)矩形,這個(gè)矩形最小單位就是一個(gè)像素。而字符化的過程就是用字符替代像素點(diǎn)的過程。所以我們要遍歷圖像的每個(gè)像素點(diǎn),但是我們應(yīng)該用什么字符取代呢?

我們顏色有一個(gè)參照表,而opencv將這個(gè)參數(shù)表切割成256份,代表不同的程度,我們也可以做一個(gè)參照表,不過表中的內(nèi)容不是顏色,而是字符。

20行Python代碼實(shí)現(xiàn)視頻字符化功能

上圖為顏色表,我們可以使顏色表和字符表建立映射關(guān)系。假如字符表如下:

mqpka89045321@#$%^&*()_=||||}

我們可以得到下列公式:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

經(jīng)過變換可以求得相應(yīng)顏色對應(yīng)字符表中的字符:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

這個(gè)公式不理解也沒關(guān)系,只需要會用即可。下面就是我們完整的代碼了:

import cv2str = ’mqpka89045321@#$%^&*()_=||||}’ # 字符表im = cv2.imread(’jljt.jpg’)# 讀取圖像grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)# 灰度轉(zhuǎn)換grey = cv2.resize(grey, (50, 18))# 縮小圖像str_img = ’’# 用于裝字符畫for i in grey:# 遍歷每個(gè)像素 for j in i: index = int(j / 256 * len(str))# 獲取字符坐標(biāo) str_img += str[index]# 將字符添加到字符畫中 str_img += ’n’print(str_img)

生成如下字符畫:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

因?yàn)槌叽绫容^小的關(guān)系,看出來的效果不是很好,我們調(diào)節(jié)好大小就好了。

四、視頻轉(zhuǎn)字符

我們知道圖片轉(zhuǎn)字符,自然視頻轉(zhuǎn)字符就不是什么問題了,我們只需要在逐幀讀取中執(zhí)行圖片字符化操作即可。

import osimport cv2str = ’mqpka89045321@#$%^&*()_=||||}’# 字符表video = cv2.VideoCapture(’jljt.mp4’) # 讀取視頻ret, frame = video.read()# 讀取幀while ret:# 逐幀讀取 str_img = ’’# 字符畫 grey = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)# 灰度轉(zhuǎn)換 grey = cv2.resize(grey, (100, 40))# 該表大小 for i in grey:# 遍歷每個(gè)像素點(diǎn) for j in i: index = int(j / 256 * len(str))# 獲取字符坐標(biāo) str_img += str[index]# 將字符添加到字符畫中 str_img += ’n’ os.system(’cls’)# 清除上一幀輸出的內(nèi)容 print(str_img)# 輸出字符畫 ret, frame = video.read()# 讀取下一幀 cv2.waitKey(5)

這樣我們就會每個(gè)5毫秒執(zhí)行一幀畫面,在我們使用pycharm執(zhí)行時(shí),會發(fā)現(xiàn)并沒有執(zhí)行清屏操作,所以我們需要到命令行運(yùn)行。最終效果就是我們的字符視頻了:

20行Python代碼實(shí)現(xiàn)視頻字符化功能

在選取字符表時(shí)我們需要注意主體的顏色,如果主體顏色較淺,則字符表的尾部應(yīng)該為一些復(fù)雜字符,如:$%#@&。字符表頭部為一些簡單字符,如:-|/等。如果主體顏色較深,而背景顏色較淺,則反之。當(dāng)然這沒有唯一的標(biāo)準(zhǔn),大家可以慢慢調(diào)節(jié)。

總結(jié)

到此這篇關(guān)于20行Python代碼實(shí)現(xiàn)視頻字符化的文章就介紹到這了,更多相關(guān)python 視頻字符化內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 大鼠骨髓内皮祖细胞-小鼠神经元-无锡欣润生物科技有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 捆扎机_气动捆扎机_钢带捆扎机-沈阳海鹞气动钢带捆扎机公司 | 许昌奥仕达自动化设备有限公司 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 深圳市东信高科自动化设备有限公司| 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价| 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 商标转让-商标注册-商标查询-软著专利服务平台 - 赣江万网 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 |