1. 程式人生 > >matlab中影象的讀取與儲存

matlab中影象的讀取與儲存

轉自https://blog.csdn.net/cy_543/article/details/41145245

影象的讀取和儲存

影象處理,主要是對已有的影象進行處理,然後再儲存起來,並不是無中生有,創造出一幅影象。因此,影象的讀取和儲存顯得比較重要。

    這裡建立test.m檔案放入已經建立的Matlab資料夾裡,之後的操作都在這裡進行。由於在檔案中操作和Command Window操作的效果一樣,所以就不再加入說明。

第一章:一些函式的介紹

  1. 介紹三個常用函式

    clc;clear;closeall;

    這三個函式不分家,在一個檔案的開頭經常會看到。那麼他們的作用是什麼呢?clc的作用就是清螢幕,即Command Window

    裡的內容會被清除掉,但是他的值仍然存在軟體裡。 clear是刪除所有的變數。比如在前面定義了 A=5;clear函式之後,A就被清除了。後面想要用,就需要重新定義。close all是將所有開啟的圖片關掉。在函式的開頭寫上這樣的函式,就保證不會受到之前變數等的影響。

    當然,也可以單獨使用。這樣就能單獨完成任務。這時最好在Command Window裡操作。

  2. typefunction

    Matlab 裡面有很多內建的函式,當我們想檢視函式內容的時候,就可以用type function來實現。比如想要檢視mean函式,Matlab到底是怎麼實現,直接type mean就可以看到。如果是檢視別人的寫的程式,在

    mean上點選右鍵,open mean就可以了。

  3. ver

    檢視當前Matlab版本的函式。一般用不到。

  4. docfunction /help function

可以用來檢視函式的用途,語法,用途。可以說Matlabhelp本身就是一本百科全書。很多內容都可以找到

第二章讀取影象

  1. 影象的讀取   
    I=imread(‘pout.tif’);

imread是讀取影象的函式。pout.tifmatlab內建的影象,不管在什麼程式內都可以直接讀取。那麼,如果我們要讀取其他位置的函式怎麼做呢?這裡我們來說幾種常見的情形。

注:Matlab資料夾內有test.m,1.jpg,image資料夾,同時image資料夾內有2.jpg

(1)讀取1.jpg

I=imread(‘1.jpg’);

(2)讀取2.jpg

I=imread(‘image\2.jpg’);%相對路徑的讀取

(3)讀取D:\1023\25\1.jpg

I=imread(‘D:\1023\25\1.jpg’);%絕對路徑的讀取

(4)讀取D:\1023\2520個影象。

fori=1:20

I=imread([‘D:\1023\25\’,num2str(i),’.jpg’]);

end

注:第四種情況需要注意的是,裡面添加了[ ],來保證這是一個整句。num2str(i)是將i由數字轉換成字元形式。這樣就能實現迴圈讀取。一般來說,會將影象跟.m檔案放在一起。當影象較多時,影象放入image文件中,讀取方式將(2)和(4)結合起來。利用相對路徑來讀取,這樣當程式和影象同時放在其他電腦上時,不會因為路徑而產生問題。

  1. 影象的顯示

  1. imshow(I)

  2. imtool(I)

  3. image(I)

關於這三個函式用法的區別,就在上面這個文章內。主要的意思是:imshow顯示按照原來的比例,而image會改變原來影象的比例。imtool,很少用到。那麼用到的時候就再研究吧。一般用imshow就足夠了。

那麼什麼時候用figure呢?當程式中只顯示一幅影象時,直接imshow就可以。然後當影象多的時候,就需要用到figuure;imshow(I1);figure;imshow(I2);figure;imshow(I3)

如果想要在一張圖片內,顯示好幾個圖怎麼辦呢?title顯示在影象的上方,起到提示的作用。

I=imread('pout.tif');

subplot(221);imshow(I);title('1');

subplot(222);imshow(I);title('2');

subplot(223);imshow(I);title('3');

subplot(224);imshow(I);title('4');

其中前面的22代表是2*2的分佈,也可以是2*3,3*4等。按照行來排列,從第一行開始分別為1 2 3 4。如圖所示。

這裡還值得一提的是figure;如果沒有要求的話,直接用figure。此時希望圖2來顯示某個影象,那麼figure(2),就指定來顯示某個影象。當然了,如果僅有一個影象顯示這樣做,那麼可能會被覆蓋掉,因此,一個程式中的用法一定要統一,並且保證後面的,不要把前面的覆蓋掉。

3、檢視和分析結果:

workspace中會有I291*240 uint874 224 ,就這說明了I是二維影象,大小是291*240,uint8型的。最小值為74,最大值是224.這裡指的是灰度值。

用函式whos就能顯示I的相關資訊:

第三章影象的儲存

1、影象的儲存

imwrite(I,’pout1.jpg’);

同樣,imwrite也有相對路徑和絕對路徑的儲存,以及連續的儲存方法。同imread

imwrite(I,’pout1.jpg’);

imwrite(I,’image\pout1.jpg’);

imwrite(I,’D:\Matlab\image\pout1.jpg’);

imwrite(I,[’image\’,num2str(i),’.jpg’])%i是變數,需要定義

這裡的.jpg可以改成.bmp等,想要的格式。

需要註明的是,儲存所選擇的資料夾,需要已經建立好。那麼怎麼去自動建立資料夾呢?

需要用mkdir函式。

mkdir(‘D:\image\1’)%絕對路徑的建立。

mkdir(‘image\1’);%絕對路徑資料夾的建立。建立之後,在Matlab資料夾內。

這樣就能夠節省很多的人力。當檔案比較多的情況下,人工去建立的話,還容易出錯。

最後附上今天的程式:當影象較多時,讀取都主要選擇相對路徑,以及迴圈讀取。程式較為簡單。

clc;clear;closeall;

I=imread('pout.tif');

figure;

subplot(221);imshow(I);title('1');

subplot(222);imshow(I);title('2');

subplot(223);imshow(I);title('3');

subplot(224);imshow(I);title('4');

whos;

mkdir('image')

imwrite(I,'image\pout2.jpg');

相關推薦

opencv學習筆記一:影象讀取儲存

影象讀取函式:cv2.imread(影象路徑,標誌符) 影象路勁可以是絕對路徑和相對路徑; 識別符號有三種: cv2.IMREAD_COLOR (忽視透明度); cv2.IMREAD_GRAYSCALE(轉換成灰度影象讀取); cv2.IMREAD_UNCHANGE

matlab影象讀取儲存

轉自https://blog.csdn.net/cy_543/article/details/41145245影象的讀取和儲存影象處理,主要是對已有的影象進行處理,然後再儲存起來,並不是無中生有,創造出一幅影象。因此,影象的讀取和儲存顯得比較重要。    這裡建立test.m

OpenCV影象顯示、讀取儲存

眾所周知,opencv中的cv2.imread函式返回的影象資料,通道是BGR,而不是一般意義上的RGB;但是,這時如果用cv2.imshow進行顯示,看到的卻是正常的樣子;而如果用其他庫的顯示函式,如matplotlib的plt.imshow來顯示,則是異常的顯示,一般都是

matlab mat格式資料儲存讀取

MAT-檔案:                         mat資料格式是matlab的資料儲存的標準格式。mat檔案是標準的二進位制檔案,還可以ASCII碼形式儲存和載入。 儲存mat檔案:                         save     

iOS開發技巧之:相簿的GIF圖片的讀取儲存

大家都知道iOS的系統相簿是不支援gif圖片預覽的。但是,這並不代表系統相簿不能儲存和讀取gif圖片。通過Safari長按gif圖片,選擇儲存到相簿,這時儲存到相簿裡的圖片就是gif的,雖然它不會動。 下面將介紹如何對系統相簿進行gif的讀取與儲存。 什麼是 UTI iOS系統相

OpenCV原始影象載入儲存壓縮技巧

載入影象 OpenCV中關於影象讀寫有兩個函式imread與imwrite,imread載入的時候支援灰度影象、彩色影象、原始影象載入,預設情況下通過imread載入的影象都是三通道的BGR彩色影象。 但是實際上OpenCV支援載入任意通道的影象,首先來仔細再看一下imread函式 Mat&

matlab文字檔案影象轉化

  一  將圖片轉化為txt文字檔案 a=imread('picture.bmp');   //讀取picture.bmp圖片 b=rgb2gray(a);        &

pgm格式檔案及其在matlab讀取儲存方法(2)

早上寫了好久的blog丟失了,原因是沒有及時儲存。對於線上這種東西還是不習慣,當作教訓好了。 言歸正傳,既然嫌棄fopen,fgetl這些麻煩,而且不好用,那便思考一下pgm究竟是什麼。以下是百度百科【1】的查詢結果: 一套API庫;遊戲系統;步槍

OpenCV2影象讀取、顯示、儲存等基本操作

之前看《學習OpenCV》這本書,一直在用IplImage,但是我自己安裝的是OpenCV2的,因此,在學這本書的時候,結合自己用的時候會出現很多的疑惑,知道現在才搞清楚,原來這本書是基於OpenCV

Matlab處理日期時間的函數

html num 查看 格式 del 需要 log 但是 獲取 Matlab用三種格式來表示日期與時間(1)雙精度型日期數字:一個日期型數字代表從公元0年到某一日期的的天數,例如,2008年8月26日夜時0點鐘被表示為733646,而這同一天的中午12點就被表示為73364

Python 檔案讀取儲存

file1=open('pima-indians-diabetes.txt','r') file2=open('out.txt','w+') #data=file1.read() i=0 while True: line=file1.readline() tt='"'+line[

自定義XML格式讀取儲存

背景         本人頭一回寫部落格,請大家多多關照。通過讀取XML檔案獲取使用者管理許可權,其中涉及三部分: 1.XML檔案的生成; 2.XML檔案的讀取; 3.XML檔案的儲存; 如何做 第一步:自己先將XML檔案格式列出來。  XML格

Go語言基礎(十五)—— Go語言實現json資料檔案讀取儲存

案例: package main import ( "os" "fmt" "encoding/json" "time" ) type Person2 struct { Name string Age int Sex string Hobby []string } fun

R 語言資料讀取儲存

一、R語言讀取文字檔案: 1、檔案目錄操作:getwd() : 返回當前工作目錄setwd(“d:/data”) 更改工作目錄 2、常用的讀取指令readread.table() : 讀取文字檔案read.csv(): 讀取csv檔案如果出現缺失值,read.

計算matlab影象的PSNR和SSIM

網上找了很多關於PSNR和SSIM的計算,很多結果算出來都不一樣,公式都是普遍的,如下: 現在總結下造成結果差異的原因。 PSNR的差異: 1.灰度影象:灰度影象比較好計算,只有一個灰度值。 2.彩色影象: (a)可以將分別計算R,G,B三個通道總和,最後

Tensorflow基礎0:檔案的讀取儲存

檔案讀取流程 學習目標 目標 說明TensorFlow檔案讀取的流程 應用 無 有四種獲取資料到TensorFlow程式的方法: tf.dataAPI:輕鬆構建複雜的輸入管道。(優

32、陣列的讀取儲存

32、讀取與儲存 import numpy as np s1 = np.array(range(10)).reshape((2,5)) print(s1) np.save('./陣列',s1) 將s1 儲

OpenCv-Python-01 影象載入儲存

雖然OpenCv主要是基於C/C++的,但是也支援Python。基本操作與OpenCv C++有點類似。 主要說明都已加註釋… 影象載入與儲存 import cv2 as cv import numpy as np #跟Mat()類似,但Python不用Mat() def g

matlab str2num 函式 str2double 函式的區別

                         str2num 函式與 str2double 函式的相同點與不同點 1. 相同點: 當str為一個含數字的

影象顯示儲存

設計WinForm程式,將圖片fy.jpg以指定大小顯示在窗體上的PictureBox1控制元件上,並將顯示的影象儲存在另一檔案中。 using System; using System.Collections.Generic; using System.ComponentModel; us