2013-07-04 262 views
1

我正在嘗試使用Opencv從網絡攝像頭捕捉視頻。麻煩安裝OpenCV?

我有以下代碼

#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 

#include <cstdio> 
#include <iostream> 
#include "cv.h" 
#include "highgui.h" 
#include <stdio.h> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    VideoCapture cap; 
} 

這會導致程序一個錯誤

過程與狀態-1073741510終止(0分鐘,34秒)

終止我想知道如果我沒有在代碼塊上正確安裝opencv

注意,當我使用這個程序來代替,一切正常

CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); 
if (!capture) 
{ 
    fprintf(stderr, "ERROR: capture is NULL \n"); 
    getchar(); 
    return -1; 
} 

IplImage* frame = cvQueryFrame(capture); 

cvNamedWindow("mywindow", CV_WINDOW_AUTOSIZE); 

while (1) 
{ 
    frame = cvQueryFrame(capture); 
    if (!frame) 
    { 
     fprintf(stderr, "ERROR: frame is null...\n"); 
     getchar(); 
     break; 
    } 

    cvShowImage("mywindow", frame); 

    if ((cvWaitKey(10) & 255) == 27) 
     break; 
} 

cvReleaseCapture(&capture); 
cvDestroyWindow("mywindow"); 

return 0; 

linker Settings compiler settings linker

編輯

改變頭來HPP文件也產生了同樣的問題

#include "opencv2/opencv.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include <cstdio> 
#include <iostream> 
#include <stdio.h> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    VideoCapture cap; 
    cap.open(1); 
    return 0; 
} 
+0

我會注意到,intelisense的代碼塊似乎知道VideoCapture。編譯工作正常,問題是當我運行該程序。 – sav

+0

嘗試將零器件編號或負器件編號作爲捕獲構造器參數。 另外,您希望從第一版的代碼中獲得什麼? 你沒有從主函數返回任何東西。捕獲已創建,然後程序已達到結束。 – morynicz

+0

不幸的是,添加返回值並沒有解決主要問題。此外,我有一個攝像頭插入,所以設備號碼指的是我的攝像頭。 – sav

回答

3

編譯和運行的程序使用OpenCV 1.x以及不包含在OpenCV 2.x中的頭文件。如果你想讓它工作,你需要安裝這個版本的OpenCV。

+0

我最近得到了這個版本的Opencv,它應該有2.x. 我需要使用不同的標題嗎? – sav

+0

@DwProd,他們似乎是從鏈接庫的版本2.4.2 –

+0

是的,它的確是這個版本可以使用嗎?我使用了錯誤的標題嗎? – sav

1

您需要包括:

#include "opencv2/opencv.hpp" 
#include "opencv2/highgui/highgui.hpp" 

代替

#include "cv.h" 
#include "highgui.h" 

C和C++頭文件不應該被包括在同一OpenCV的項目。最後,它應該是這樣的:

#include "opencv2/opencv.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 

#include <cstdio> 
#include <iostream> 

#include <stdio.h> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    VideoCapture cap; 
} 
+0

謝謝你的迴應,不幸的是,我仍然有嘗試這樣的問題。」進程終止狀態-1073741510(0分鐘,8秒) 「 – sav

+0

我可能是錯的,但它似乎你已經安裝了兩個版本,我建議你安裝最新版本的OpenCV 2.X,使用thomas提供的頭文件並使用合適的庫進行鏈接。 – wrousseau