2012-08-10 127 views
1

是否有任何內置的庫,用於在opencv 2.x版本的圖像上滑動窗口(自定義大小)? 我試圖自己編寫算法,但是我發現它非常痛苦,可能很容易出錯。 我需要滑過圖像併爲svm的輸入創建直方圖。 HOG描述符有一個用於計算HOG特徵但我有自己的特徵集因此我只需要一個算法讓我滑過圖像。opencv滑動窗口

+0

就我所知,沒有OpenCV的內置庫。 OpenCV不包含任何高級GUI功能。你將不得不編寫自己的代碼來做到這一點。 – bubble 2012-08-11 06:33:18

+0

我實現了這樣的算法來做到這一點,但這聽起來很尷尬的OpenCV沒有這樣一個重要的功能,因爲滑動窗口是非常有用的,適用於很多目的。 – pms 2012-08-13 18:50:05

回答

1

您可以在cv::Mat對象上定義感興趣區域(ROI),這會爲您提供一個指向子窗口的新對象Mat。這不會複製底層數據,而只是使用適當的元數據創建新的標題。

另見本的其他問題:

+0

我知道投資回報率,但問題是如何將此技術用作滑動窗口,更重要的是如何在SVM中使用此功能 – pms 2012-08-13 18:09:05

+0

這是您正在嘗試執行的操作嗎? http://docs.opencv.org/modules/objdetect/doc/latent_svm.html這個實現是否已經爲你開啓了窗口? – gavinb 2012-08-14 13:29:03

+0

我不是在做潛伏支持向量機。它是規則的SVM。但是我發現了一個已經在opencv中實現了SVM的CvSVM。但最後我不得不自己編寫窗口滑塊。 – pms 2012-08-23 07:32:33

1

Basic代碼可以看起來像。代碼被描述得足夠好。我希望。

這是單一尺度slideing窗口60X60女巫步驟30.

enter image description here

這個簡單的例子的結果是ROI。

enter image description here

您可以訪問此基礎教程Tutorial Here

 // Parameters of your slideing window 

     int windows_n_rows = 60; 
     int windows_n_cols = 60; 

     // Step of each window 
     int StepSlide = 30; 

for (int row = 0; row <= LoadedImage.rows - windows_n_rows; row += StepSlide) 
     { 

    for (int col = 0; col <= LoadedImage.cols - windows_n_cols; col += StepSlide) 
      { 

      Rect windows(col, row, windows_n_rows, windows_n_cols); 
      Mat Roi = LoadedImage(windows); 
      } 
     }