????在文章 YOLOv3 + Matlab Robotics ToolBox 實戰(zhàn) -- 軟包裝藥品的機器人分揀系統(tǒng)設計與仿真 最后的展示視頻 軟包裝藥品的機器人分揀系統(tǒng)設計與仿真中,使用到了將一組JPG格式的圖片轉換為MP4格式的視頻展运,解決了Matlab中相鄰連續(xù)Figure之前動畫擦除失敗的問題活逆,覺得還比較有意思,因此記錄下來拗胜。下面是詳細介紹:
一蔗候、背景介紹
????在前文提到的文章內容中,對于藥品的轉移過程埂软,我想要達到的效果是藥品隨著末端執(zhí)行器同步轉移锈遥,雖然Matlab Robotics ToolBox中以關節(jié)角作為參數(shù)利用plot可以繪制動態(tài)的關節(jié)移動效果,但是當引入藥品之后勘畔,由于藥品是一個由六個獨立平面組成的六面體所灸,繪制需要利用到 hold on 這一語句,因此繪制出來的結果就是整個空間全是藥品移動留下的軌跡炫七,這樣是不好的庆寺,因此我將每一個關節(jié)動作對應的Figure畫面狀態(tài)進行拆分,并將該畫面保存為單幀圖片诉字,最后再將所有圖片進行拼接從而制作出一個完美的動畫。
二知纷、開發(fā)平臺
開發(fā)平臺:MATLAB
三壤圃、制作過程
3.1、保存Figure
????利用for循環(huán)琅轧,將每一幀圖像繪制出來但是不顯示伍绳,直接按序編號保存在文件夾中:
savepath = 'D:\image\';%保存路徑
for count = 1:100
h = figure;%將figure保存在h中
set(h,'Visible','off');%將figure設為不顯示,防止一直彈框
saveas(h,[savepath num2str(imgcount)],'jpg');
%...
plot(...)%省略號寫你想要畫的圖乍桂,比如v-t冲杀、s-t 圖像之類的
%...
clf;
end
3.2效床、讀取圖片
????假設文件夾中已經保存了這樣一組連續(xù)編號的若干張圖片:????在matlab中,我們可以通過下面的程序讀取一張圖片:
inputpath = 'D:\image\1.jpg';%圖片輸入路徑
frame = imread(inputpath); % 讀取圖片权谁,放在變量frame中
????但是我們我們需要的是讀取很多張圖片來合成視頻欸剩檀,那該怎么辦呢?因此我們需要稍微潤色一下旺芽,得到下面的程序:
inputpath = 'D:\image\';%圖片輸入路徑
format = '.jpg';%圖片格式
pic=dir(inputpath,'*.jpg');% 返回路徑內容:文件名
for i=1:(length(pic))
frame = imread(strcat(inputpath, num2str(i), format)); % 讀取圖片沪猴,放在變量frame中
%...這里是你想要對每張圖片的操作,比如反色采章、二值化之類的
end
????上面的程序首先將圖片路徑拆分為輸入文件夾路徑inputpath和圖片格式format运嗜,這樣在for循環(huán)中再利用strcat對這兩者再加上序號變量進行拼接得到完整的圖片路徑,再利用imread讀取即可循環(huán)讀入圖片悯舟。而有的時候懶得去更改for循環(huán)的循環(huán)上限担租,因此利用 length(pic) 可以獲得文件夾中的文件數(shù)目。
3.3抵怎、制作視頻
????在實現(xiàn)多幅圖片導入之后奋救,我們可以在for循環(huán)中執(zhí)行制作視頻的操作。Matlab中提供了這樣一個函數(shù):writeVideo便贵,可以點擊查看定義菠镇。我們對3.2節(jié)的程序稍作修改如下:
inputpath = 'D:\image\';%圖片輸入路徑
format = '.jpg';%圖片格式
pic=dir(inputpath,'*.jpg');% 返回路徑內容:文件名
WriterObj = VideoWriter('D:\movie\temp0.avi'); %合成視頻目標文件路徑
WriterObj.FrameRate = 10;%調整幀率,這個可以調整視頻長短
for i=1:(length(pic))
frame = imread(strcat(inputpath, num2str(i), format)); % 讀取圖片承璃,放在變量
writeVideo(WriterObj, frame);% frame存到變量WriteObj中
%...這里是你想要對每張圖片的操作利耍,比如反色、二值化之類的
end
close(WriterObj);%關閉視頻
????通過這樣的方法盔粹,我們便把讀入的一系列圖片合成為一個連續(xù)的視頻隘梨,通過調整幀率我們還可以調整視頻的時長,不過有一點不方便的是這個函數(shù)保存的視頻格式為AVI格式舷嗡,若是需要MP4格式的話轴猎,這里我使用的是格式工廠,雖然轉了一手进萄,但是也不是很麻煩捻脖。最后再放一下視頻鏈接: 軟包裝藥品的機器人分揀系統(tǒng)設計與仿真 。
四中鼠、更多
????除了上面我記錄的方法外可婶,在全國大學生智能車競賽老大 -- 清華大學卓晴老師經營的公眾號 TsinghuaJoking 的 如何在推文里讓你的曲線動起來? 一文中給出了使用matplotlib以及軟件movgear制作出了GIF類型的動圖援雇,也挺有意思的矛渴,也可以學習一下^ v ^