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

您的位置:首頁技術文章
文章詳情頁

20行Python代碼實現視頻字符化功能

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

我們經常在B站上看到一些字符鬼畜視頻,主要就是將一個視頻轉換成字符的樣子展現出來??雌饋硎欠浅8叨?,但是實際實現起來確是非常簡單,我們只需要接觸opencv模塊,就能很快的實現視頻字符化。但是在此之前,我們先看看我們實現的效果是怎樣的:

20行Python代碼實現視頻字符化功能

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

一、OpenCV的安裝及圖片讀取

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

pip install opencv-python

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

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

首先我們使用cv2.imread方法讀取圖片,該方法返回一個ndarray對象。然后調用imshow方法顯示圖像,調用后會出現一個窗口,因為這個窗口只會出現一瞬間,所以我們調用waitKey等待輸入,傳入0表示無限等待。因為opencv是使用c++編寫的,所以我們需要銷毀內存。

二、OpenCV中的一些基礎操作

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

(1)灰度轉換

灰度處理是一個非常常用的操作,我們原始的圖片是有BGR三個圖層(在OpenCV中,圖像是以BGR形式讀?。N覀冞M行灰度處理直觀上看就是將圖片變成黑白,而本質上是將圖片的三個圖層通過計算,變成一個圖層。而這種計算是不需要我們做的,我們只需要調用OpenCV中的函數即可:

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

效果圖和原圖對比如下:

20行Python代碼實現視頻字符化功能

左邊為原圖,右邊為灰度轉換后的圖像。

(3)改變圖片大小

因為字符化后圖像會比較大,所以我們需要先縮小圖片,我們調用cv2.resize即可改變圖像大?。?/p>

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

(2)逐幀讀取視頻

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

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

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

三、圖片字符化

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

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

20行Python代碼實現視頻字符化功能

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

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

我們可以得到下列公式:

20行Python代碼實現視頻字符化功能

經過變換可以求得相應顏色對應字符表中的字符:

20行Python代碼實現視頻字符化功能

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

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

生成如下字符畫:

20行Python代碼實現視頻字符化功能

因為尺寸比較小的關系,看出來的效果不是很好,我們調節好大小就好了。

四、視頻轉字符

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

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

這樣我們就會每個5毫秒執行一幀畫面,在我們使用pycharm執行時,會發現并沒有執行清屏操作,所以我們需要到命令行運行。最終效果就是我們的字符視頻了:

20行Python代碼實現視頻字符化功能

在選取字符表時我們需要注意主體的顏色,如果主體顏色較淺,則字符表的尾部應該為一些復雜字符,如:$%#@&。字符表頭部為一些簡單字符,如:-|/等。如果主體顏色較深,而背景顏色較淺,則反之。當然這沒有唯一的標準,大家可以慢慢調節。

總結

到此這篇關于20行Python代碼實現視頻字符化的文章就介紹到這了,更多相關python 視頻字符化內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 万博士范文网-您身边的范文参考网站Vanbs.com | POS机办理_个人pos机免费领取-银联pos机申请首页 | 123悬赏网_发布悬赏任务_广告任务平台 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | IP检测-检测您的IP质量| 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | STRO|DTRO-STRO反渗透膜(科普)_碟滤| 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | IP检测-检测您的IP质量 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 |