2017-04-06 132 views
2

這就是我通常在openCV中處理視頻的方式。如何在C++ openCV中使用樹莓派相機作爲視頻輸入?

#include <iostream> 
#include<opencv2/opencv.hpp> 

int main(int argc, char** argv) 
{ 

     Mat output; 
     VideoCapture cap(CV_CAP_ANY); 


     if(!cap.isOpened()) 
     { 
      cout << "Could not initialize capturing...\n"; 
      return 0; 
     } 


     while(1){ 
      cap >> output; 

      imshow("webcam input", output); 
      char c = (char)waitKey(10); 
      if(c == 27) break; 
      } 
} 

現在我有一個樹莓派相機,我有以下最低:

#include <iostream> 
#include<opencv2/opencv.hpp> 
#include <raspicam/raspicam_cv.h> 


int main(int argc, char** argv) 
{ 

     Mat image, output; 
     //VideoCapture cap(CV_CAP_ANY); 
    raspicam::RaspiCam_Cv cap; 

     if(!cap.isOpened()) 
     { 
      cout << "Could not initialize capturing...\n"; 
      return 0; 
     } 

     while(1){ 
      cap >> output; 

      imshow("webcam input", output); 
      char c = (char)waitKey(10); 
      if(c == 27) break; 
     } 
} 

但後者沒有工作,這是什麼是輸出到終端,當我編譯:http://paste.ubuntu.com/24324541/

有人能告訴我什麼是正確的做法嗎?

謝謝

回答

0

the documentation,你不能把它作爲一個流,而是必須這樣做:

while(1){ 
    cap.grab(); 
    cap.retrieve(output); 

    imshow("webcam input", output); 
    char c = (char)waitKey(10); 
    if(c == 27) break; 
} 
+0

之前接受你的答案我想知道我怎麼能編譯。我只是想出了你發佈的內容,但是我無法編譯它:http://www.paste.ubuntu.com/24324878 – ohiliouh

+0

你需要將'-lraspicam_cv'添加到庫列表中。 –