4滴因緣際會,又回來寫程式了。而且變成matlab了,怎麼可以這麼苦呢?
今天講解這個指令:uigetfile 用於指定檔案+路徑,寫的方式如下:
[filename_tmp,training_image_path_tmp] = uigetfile(['*'],['Please input sample'],'MultiSelect', 'on');
這個方式寫出來的選取功能,可以一次選多個檔案......也可以只選一個檔案。
可是,
當只選擇一個檔案,filename_tmp 會是字串string;當多個檔案filename_tmp 會是細胞陣列cell。
總之,儲存文字的方式不同。
所以需要寫一個判斷式,讓程式知道filename_tmp 是不是cell,如果是cell,再轉換成string;
如果不是cell,那就不進行轉換。((如果仍進行轉換,error))
這部分的code就不附上了。
接著再進行,檔案的讀取,由於操作的是二維RGB圖片檔故使用 imread。
A_matraix=imread(strcat(string(training_image_path_tmp),filename_tmp));
由於 imread 這個指令,好像只吃char,所以
1. 要先將 檔案路徑training_image_path_tmp(char)轉成string
2. training_image_path_tmp(string)與 filename_temp(string) 進行合併成一個string
3. 合併之後的結果轉成char
4. imread 吃下去這個char ,並且命名為A_matraix。
我覺得這個部分,可能可以簡化。
至此,選擇的圖片被讀進matlab。
另外,以 imwrite,寫出檔案。或是以 imshow顯示檔案。
值得注意的是,這兩個指令只吃unit8 的格式。很奇怪。
figure,imshow(uint8(pic_123(:,:,:)));
imwrite(uint8(pic_123(:,:,:)), [[training_image_path_tmp '\0729_image'] '.tif'] , 'tif' );
寫出的路徑、檔名都在 [ ] 之中,由於training_image_path_tmp,是前面指定的位置,所以寫出的檔案就會在那個路徑。