從視頻中獲取幀圖片
網(wǎng)絡傳輸數(shù)據(jù)幀
數(shù)據(jù)在網(wǎng)絡上是以很小的稱為幀(Frame)的單位傳輸?shù)模瑤蓭撞糠纸M成,不同的部分執(zhí)行不同的功能。幀通過特定的稱為網(wǎng)絡驅(qū)動程序的軟件進行成型,然后通過網(wǎng)卡發(fā)送到網(wǎng)線上,通過網(wǎng)線到達它們的目的機器,在目的機器的一端執(zhí)行相反的過程。接收端機器的以太網(wǎng)卡捕獲到這些幀,并告訴操作系統(tǒng)幀已到達,然后對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會帶來安全方面的問題 。
“幀”數(shù)據(jù)由兩部分組成:幀頭和幀數(shù)據(jù)。幀頭包括接收方主機物理地址的定位以及其它網(wǎng)絡信息。幀數(shù)據(jù)區(qū)含有一個數(shù)據(jù)體。為確保計算機能夠解釋數(shù)據(jù)幀中的數(shù)據(jù),這兩臺計算機使用一種公用的通訊協(xié)議?;ヂ?lián)網(wǎng)使用的通訊協(xié)議簡稱IP,即互聯(lián)網(wǎng)協(xié)議。IP數(shù)據(jù)體由兩部分組成:數(shù)據(jù)體頭部和數(shù)據(jù)體的數(shù)據(jù)區(qū)。數(shù)據(jù)體頭部包括IP源地址和IP目標地址,以及其它信息。數(shù)據(jù)體的數(shù)據(jù)區(qū)包括用戶數(shù)據(jù)協(xié)議(UDP),傳輸控制協(xié)議(TCP),還有數(shù)據(jù)包的其他信息。這些數(shù)據(jù)包都含有附加的進程信息以及實際數(shù)據(jù)。
視頻圖像幀
幀——就是影像動畫中最小單位的單幅影像畫面。一幀就是一副靜止的畫面,連續(xù)的幀就形成動畫,如電視圖象等。通常說幀數(shù),簡單地說,就是在1秒鐘時間里傳輸?shù)膱D片的幀數(shù),也可以理解為圖形處理器每秒鐘能夠刷新幾次,通常用FPS(Frames Per Second)表示。每一幀都是靜止的圖象,快速連續(xù)地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鐘幀數(shù) (fps) 越多,所顯示的動作就會越流暢。
關鍵幀
——任何動畫要表現(xiàn)運動或變化,至少前后要給出兩個不同的關鍵狀態(tài),而中間狀態(tài)的變化和銜接電腦可以自動完成,在Flash中,表示關鍵狀態(tài)的幀叫做關鍵幀。
過渡幀
——在兩個關鍵幀之間,電腦自動完成過渡畫面的幀叫做過渡幀。
以下例出從視頻中獲取幀圖片
void video2Image()
{
//VideoCapture cap("1.avi");
VideoCapture cap("G:\CBU2_MiddleFrameDetection\imageData\拍攝視頻\10.21\直角邊\1.avi");
// 獲取視頻總幀數(shù)
long totalFrameNumber = cap.get(CAP_PROP_FRAME_COUNT);
cout << "total frames: " << totalFrameNumber << endl;
Mat frame;
bool flags = true;
while (flags) {
// 讀取視頻每一幀
cap.read(frame);
stringstream str;
str << "a2" << currentFrame << ".jpg";
cout << "正在處理第" << currentFrame << "幀" << endl;
printf(" ");
// 設置每30幀獲取一次幀
if (currentFrame % 2 == 0)
{
// 將幀轉(zhuǎn)成圖片輸出
imwrite("G:\CBU2_MiddleFrameDetection\imageData\拍攝視頻\img10.21\2" + str.str(), frame);
}
// 結(jié)束條件
if (currentFrame >= totalFrameNumber) {
flags = false;
}
currentFrame++;
}
}
審核編輯 :李倩
-
處理器
+關注
關注
68文章
19286瀏覽量
229868 -
網(wǎng)絡傳輸
+關注
關注
0文章
138瀏覽量
17401 -
通訊協(xié)議
+關注
關注
10文章
274瀏覽量
20354
原文標題:從視頻中獲取幀圖片
文章出處:【微信號:機器視覺沙龍,微信公眾號:機器視覺沙龍】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論