1. 程式人生 > >關於matlab影象儲存的問題

關於matlab影象儲存的問題

今天我來總結下自己用過的幾種matlab儲存影象的方法,希望給有需要的人一些幫助,也為自己理理思路。

1.手動儲存

Figure->File->save As...選擇儲存的位置、儲存名稱、儲存型別

優勢:操作簡單、不需要另加程式碼,所見即所得

劣勢:儲存的影象四周帶白邊,當然也可以去掉白邊,但會改變影象原有的尺寸。

2.imwrite命令

imwrite函式的簡單用法可以help imwrite,大概就是imwrite(A,FILENAME,FMT)。A為影象資料,FILENAME是目標影象的名字,FMT是要生成影象的格式。

優勢:影象的尺寸不用被改變。不用彈出Figure框。

劣勢:對影象的修改(比如說畫框)不能在影象上顯示。

3.saveas命令

saveas函式的簡單用法也可以help saveas,用法具體為saveas(H,'FILENAME','FORMAT'),H為圖形控制代碼,如果圖形視窗標題欄是“Figure 1”,則控制代碼就是1.FILENAME為目標影象名字,FORMAT為要生成影象的格式。

example:saveas(gcf,strcat('D:\jiangshan\0119\2 (',num2str(s),').jpg'));%gcf表示當前控制代碼

上面的意思是用一個迴圈,把影象依次存入到檔案中。

優勢:這是對Figure框內影象的儲存,是第一中方法的程式碼實現法,是所見即所得的儲存方法。

劣勢:如方法1,改變了原有影象的尺寸。

4.print命令(用法與saveas很像)

print函式不是用來儲存影象的,但可以原來儲存影象。用法:print(H,'FORMAT','FILENAME'),H為圖形控制代碼,FORMAT為需要儲存影象的格式,FILENAME為儲存的名字。

優劣勢同3.

附:

1.消除白邊的方法:imshow(image,'border','tight','initialmagnification','fit');

2.圖片不顯示直接儲存:set(figure(1),'visible','off');

3.大家知道,用opencv畫框的時候可以不用顯示,直接在源影象資料中儲存,於是可以在matlab中呼叫opencv來實現畫框然後儲存影象。matlab中畫框用rectangle函式,具體用法為rectangle('Position',[x,y,w,h]);(x,y)為左上角座標點,(w,h)為框的長和寬,後面的引數可以help rectangle自己加。但它只能在figure中進行畫框。而opencv中的畫框函式cv.rectangle則在影象中畫框,不用顯示,也就可以儲存原影象的尺寸和大小,兩種用法:1.img=cv.rectangle(img,pt1,pt2),pt1為左上角座標[x1,y1].pt2為右下角座標。2.img=cv.rectangle(img,rect),rect為左上角座標和框的長寬[x1,y1,w,h]。引數自己加。後面用imwrite或cv.imwrite都可以,用法稍微有些不同,不再詳述,至於matlab怎麼呼叫opencv,且看下回分解。