發表文章

目前顯示的是 5月, 2013的文章

用命令提示字元將多個yuv圖檔合併成一個yuv序列

妥善利用Windows command line的copy指令, 就能將多個yuv圖檔合併成一個yuv序列。 copy NUL a.yuv copy /b a.yuv+*.yuv 我們知道YUV檔其實每一張Frame都只是連接著存放, 依照這個想法, 如果有很多張YUV圖片,都放在當前目錄下, 我們可能會用下面這種方式將yuv檔合併成一個a.yuv (低效率作法) dir /b *.yuv > ListFile.txt copy NUL a.yuv for /f %%x in (ListFile.txt) do ( rem echo %%x copy /b a.yuv+%%x ) del /F ListFile.txt 透過copy指令的特殊語法,我們也可以將yuv檔合併成一個a.yuv 簡便且高效率作法 copy NUL a.yuv  copy /b a.yuv+*.yuv 先用NUL 創立一個空檔案,然後把當前目錄下的所有檔案都拷貝過來 這個作法的缺點就是,檔案不見得會按照順序合併,因為*.yuv是由系統決定順序 我自己的測試是,就算檔名是連續的,還是不見得會照順序,可能是按檔案放到這個資料下的時間順序來處理的

用Maltab將jpg圖檔儲存成png無失真圖檔

用Maltab將jpg圖檔儲存成png無失真(lossless)圖檔,只需要一個只令呦! imwrite(img, filepath, 'Compression', 'none'); 下面給一個處裡一整個資料夾的範例,還會check是否與原圖一模一樣。 DoLosslessValidation = true; files=dir('*.jpg'); if size(files,1) <= 0     error('Cannot find any *.jpg files!'); end cnt = 0; valid_cnt = 0; for i=1:size(files,1)     [pathstr, name, ext] = fileparts(files(i).name);     img = imread(files(i).name);     if ~isempty(img)         imwrite(img, [name '_lossless.png'], 'Compression', 'none');               cnt = cnt+1;               if DoLosslessValidation             rec_img = imread([name '_lossless.png']);                       islossless = 0==sum(double(rec_img(:))-double(img(:)));                         ...

WinXP中的執行檔無法使用超過2.7G的記憶體

圖片
!這是在使用XP時找到的解法,可見我閒置多久未發表它了! 當EXE無法使用超過2.7G的記憶體, 可使用Visual Studio提供的系統工具 editbin 來解除WinXP的限制 在命令提示字元底(Command Line)底下輸入指令 editbin /LARGEADDRESSAWARE 指定要修改的EXE執行檔 關於editbin系統程式可以參考MSDN http://msdn.microsoft.com/zh-tw/library/xd3shwhf(v=vs.80).aspx 如果你無法執行editbin,但是你又有裝Visual Studio, 表示你需要使用VS的Command line捷徑來啟用VS系統工具。 例如: Microsoft Visual Studio 2008的Command line捷徑會在 「開始」→「程式集」→「Microsoft Visual Studio 2008」   →「Visual Studio Tools」→「Visual Studio 2008命令提示字元」

從命令提示字元執行Matlab的M檔程式

Command Line執行Matlab的M檔程式 1. 首先設定系統路徑,把Matlab的執行檔(含有matlab.exe的目錄)路徑 例如:Matlab 2011a的執行檔路徑為 C:\Program Files\MATLAB\R2011a\bin 2. 指令 matlab -nodesktop -nosplash -r M檔案的名稱(不需要含副檔名.m) 它就會run指定的.m檔囉! 這裡給一個Command line的應用,呼叫Matlab將Excel檔內的資料成圖片 for %%v in (test_videos\*.yuv) do ( matlab -nodesktop -nosplash -wait -r "xls2epsc('ExpRes_%%~nv.xlsx', 'RD_%%~nv.eps')" ) matlab的-wait選項是等待程式結束才繼續。