2012-12-05 45 views
-1

我正在做一個關於計算機視覺的項目,我有一個問題。在使用OpenCV成功加載視頻後,我想提取視頻幀並查看它們的相似之處。我被告知我需要使用矩陣來達到這個目的。我會如何去做這件事?使用矩陣查看與視頻幀的相似度

回答

1

當你捕捉一個視頻幀時,你會得到一個Mat類的實例。這已經是您視頻幀圖像像素的矩陣。

要查看相似度,您需要捕獲一個幀,然後捕獲另一個幀,一旦您有兩幀可以運行比較。

您需要進一步解釋您想要達到的目標,因爲有很多方法可以比較圖像並使用兩幀視頻捕捉獲得不同的結果。

Mat videoFrame, previousFrame; 
VideoSource myCam; 
// initialise your video frame. 
prepVideoCam(); 

// start a loop{ 
    myCam >> videoFrame; // Captures the current frame to videoFrame. 
    if(i_have_previousFrame) 
     // do some processing if i have a previous frame. 

    videoFrame.copyTo(previousFrame); 
// back to loop 

您會發現videoFrame已經是矩陣。

爲了幫助你順利地從這裏開始http://code.opencv.org/projects/opencv/wiki如果你還沒有這樣做。 OpenCV從舊網站遷移到新網站,我相信這是最新的。

下載這個文件http://docs.opencv.org/opencv_tutorials.pdf

本文將解釋的差異,併爲你提供很多的教程,通過您的方式工作。

「2.1 Mat - 基本圖像容器」部分開始解釋在v1和v2之間openCV的區別和更新。它還展示瞭如何交互使用它們,但個人堅持使用v2語法和類。

在本節中花點時間,因爲它會很快變得複雜。

還要注意的是,當你安裝OpenCV,所有這些教程我認爲源文件是包的一部分,或者至少有一個文件的地方與他們全身。

希望進一步幫助。

+0

我想首先獲得視頻播放,然後捕獲幀,並找到幀之間的差異,這樣我就可以創建一個無跳躍的無限循環。不知道這是否有道理,但是,這是我想要實現的。 快速問題:我使用命令'./executable'來運行我的視頻,但我什麼也沒看到。它是否正確? –

+0

一開始,它看起來像你使用opencv 1,IplImage是舊的風格,因爲Mat是新的。這將是值得檢查出更新的教程。先嚐試爲你設定一個特定的尺寸。並檢查if(frame)是否有條件看到你實際上是否過去了。 – Emile

+0

我很困惑:( –

0

你是什麼意思的'相似性'?

如果你指的是不同的像素,你可以在OpenCV中簡單地「減去」另一幀。 '矩陣'部分可能指的是OpenCV用於處理圖像的cv :: Mat結構。

詳細介紹幾個OpenCV教程。

+0

我試圖創建一個視頻紋理,所以我將不得不找到類似的幀來跳轉,因此術語「相似性」。 –