把Webcam網路攝影機畫面轉換成ASCII文字的Flash影片

建立轉換ASCII文字的Webcam網路攝影機Flash影片
文∕趙英傑

最近在Maso的blog看到webcam(網路攝影機)視訊畫面轉成ASCII字元的實驗,覺得很有趣,所以自己也嘗試製作一個。如同Maso提到的,這個程式的原理是先把影像畫面轉換成灰階後,再依據像素的明暗程度,對應顯示不同的字元。下圖是本文範例影片的示範效果,文字欄位採用系統的_typewriter定寬字,並設定-4pt的行距。

ascii art webcam

彩色影像轉換成灰階的方法,是把圖像資料乘上一個4 x 4格式的轉換矩陣;依據Paul Haeberli先生的這份文件,以及這個採用微軟.Net平台的C#語言寫成的ASCII Art程式教學文件說明,灰階轉換矩陣有底下三種形式:

明暗度(灰階)轉換矩陣

除了明暗度(luminance)之外,4×4矩陣也用於調整色相、對比和飽和度操作。

ActionSrcript語言採用ColorMatrixFilter類別來設定色彩轉換矩陣濾鏡。以灰階轉換為例,範例程式如下:

// 設明暗度階轉換矩陣
var R:Number = 0.3086;	// 或  0.2125
var G:Number = 0.6094;	// 或  0.7154
var B:Number = 0.0820;	// 或  0.0721
var matrix:Array = [R, G, B, 0, 0, 
                    R, G, B, 0, 0, 
                    R, G, B, 0, 0, 
                    0, 0, 0, 1, 0];
var gray:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var myFilters:Array = [gray];

在底下的範例影片中,左邊是未處理的webcam畫面,右邊則是採用BitmapData類別擷取視訊的點陣格式,並套用灰階轉換矩陣後的效果。讀者可按此連結下載此範例原始檔(請使用Flash 8或更高版本的軟體開啟)。

底下是本文的範例影片,筆者使用"MWHNBREF#%$@&XKGA4UDPZVJ90SLC()?321\|/!;*+^=~-‘. "這48個字元,代表由暗到明的像素,並且每隔3個像素取樣(也就是說,僅取出點陣圖像中的0, 3, 6, 9…像素,並轉成對應的字元)。讀者可按此連結下載此範例原始檔。

Posts created 486

2 thoughts on “把Webcam網路攝影機畫面轉換成ASCII文字的Flash影片

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top