這篇文章主要為大家展示了“怎么用MATLAB做一個完美的照片墻”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么用MATLAB做一個完美的照片墻”這篇文章吧。
創(chuàng)新互聯(lián)公司服務項目包括尖草坪網(wǎng)站建設、尖草坪網(wǎng)站制作、尖草坪網(wǎng)頁制作以及尖草坪網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,尖草坪網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到尖草坪省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
-- 原理 --
其實,如果前面分割圖片的原理理解了的話,本期中拼接圖片的原理不用說也能想的到。
照片墻不就是一個由許多小圖片構成的大圖片么,也就是說照片墻實際上就是由許多小矩陣構成的大矩陣?;砣婚_朗了把,只要用循環(huán)把這些矩陣拼接起來就能實現(xiàn)。(不過值得注意的是,一般都是rgb圖像,如果直接以原來的尺寸拼接,會出現(xiàn)矩陣太大,MATLAB就直接不干了,所以如果圖片比較多的話需要先采用imresize函數(shù)縮小一下)
-- 源碼 --
clc
clear
close all
warning off
%% 我把保存圖片的文件夾temp移到當前路徑下了,里面有16張圖片
Pics = struct2cell(dir('temp \*jpg'));%讀取文件夾中的圖片
Pics = Pics(1,:);%獲取圖片名
OnePic = imread(['temp\' Pics{1}]);%讀入第一張圖片
OnePic = imresize(OnePic,0.5);%原圖比較大,合成成照片墻后,照片墻太大,所以縮小一下
m = size(OnePic,1);%獲取第一張圖片的像素行數(shù)
n = size(OnePic,2);%獲取第一張圖片的像素列數(shù)
%% temp中有16張圖片
%這里設置為4x4的照片墻
row = 4;%4行
column = 4;%4列
fullPic = uint8(zeros(m*row,n*column,3));%初始化照片墻
k = 1;%初始化計數(shù)器,用于記錄第幾張圖片
for i = 0:row-1
for j = 0:column-1
I_Temp = imread(['temp\' , Pics{k}]);%讀入照片
I_Temp = imresize(I_Temp,[m,n]);%把所有照片大小設置為第一張照片的大小
fullPic(i*m+1:(i+1)*m , j*n+1:(j+1)*n , :) = I_Temp;%拼接
k = k+1;%更新計數(shù)器
imshow(fullPic)%顯示當前的照片墻
drawnow%刷新屏幕
end
end
imwrite(fullPic,'PicWall.jpg')%保存圖片嘍
由于之前的分割圖片我們是要保存多張圖片,所以采用四維數(shù)組,第四維是照片的張數(shù)。而這里我們最后只要保存一張圖片所以采用三維數(shù)組保存即可
-- imresize函數(shù)的部分用法 --
這里我還是直接粘貼help的內容吧,大家一塊學學英語。
imresize: Resize image.
B = imresize(A, SCALE) returns an image that is SCALE times the
size of A, which is a grayscale, RGB, or binary image.(這個非限定從別管它)
B = imresize(A, [NUMROWS NUMCOLS]) resizes the image so that it has the specified number of rows and columns. Either NUMROWS or NUMCOLS may be NaN, in which case imresize computes the number of rows or columns automatically in order to preserve the image aspect ratio.
解釋一下吧:第一個用法中,SCALE是把圖像矩陣A放大的倍數(shù),比如縮小0.5倍就寫0.5,就行。
第二個用法用,[NUMROWS NUMCOLS]放的是resize后的圖片有NUMROWS行像素和NUMCOLS列像素。
程序中采用了第一種方法。
-- 效果 --
我電腦有點卡,所以下面的GIF開頭有點慢。(主要還是照片墻的矩陣有點大)
以上是“怎么用MATLAB做一個完美的照片墻”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:怎么用MATLAB做一個完美的照片墻
網(wǎng)址分享:http://www.rwnh.cn/article16/gdgcgg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、移動網(wǎng)站建設、網(wǎng)頁設計公司、網(wǎng)站制作、面包屑導航、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)