2017-05-01 61 views
1

我在Visual Studio 2015中使用OpenCV版本3.2.0,並且能夠訪問我的攝像頭,直到今天上午我突然開始工作時爲止。我無法弄清楚這個問題來自哪裏。我現在得到:OpenCV - 網絡攝像頭imshow不顯示實時動態,灰色屏幕代替

enter image description here

它不拋出任何錯誤,但它也不會通過網絡攝像頭

#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include <iostream> 

using namespace std; 
using namespace cv;  

int main(int argc, char** argv) 
{ 
    VideoCapture cap; 
    cap.open(0); 
    if (!cap.isOpened()) 
    { 
     printf("--(!)Error opening video capture\n"); 
     return -3; 
    } 


    Mat image; 
    namedWindow("Image", CV_WINDOW_AUTOSIZE); 
    while (1) 
    { 
     cap.read(image); 

     imshow("Image", image); 
     waitKey(30); 
    } 


    return 0; 
} 

有沒有人遇到過這種錯誤顯示任何輸入?

編輯: 事情我已經看過:

我的網絡,我有東西像谷歌視頻羣聊工作,所以我不認爲這是一個攝像頭的問題。

此外,我卸載了Visual Studio 2015並安裝了Visual Studio 2017,以查看重新安裝是否可以正常工作,並且仍然可以得到相同的結果。

編輯:

我收到錯誤<information not available, no symboles loaded for opencv_world320d.dll>當我創建一個新VideoCapture對象。我很確定我已經正確地包含了所有內容。

配置屬性 - > C/C++ - >附加包含目錄: $(OPENCV_BUILD)\include

配置屬性 - >鏈接 - >一般: $(OPENCV_BUILD)\x64\vc14\lib

配置屬性 - >鏈接 - >輸入: opencv_world320d.lib

+0

試一下:'Mat frame; cap >> frame;'在while循環中,並在此之前移除'Mat image'。 – eyllanesc

+0

@eyllanesc陰性。按照您的建議,我使用了'image'而不是'frame' – luckyging3r

+0

Mat對象的創建必須在循環中。 – eyllanesc

回答

0

@michael scolfield所示,這是我的防病毒屏蔽我的網絡攝像頭的問題。我無法弄清楚如何排除我的Visual Studio目錄,所以我只是試圖卸載它,它的工作。這將是很好的防病毒,並有這個工作,所以我需要弄清楚。但對於臨時工,這將起作用。

1

我通過使用CMake編譯和構建源代碼獲得Opencv後遇到同樣的問題。然後,我刪除了它們,並從預先創建的二進制文件中安裝了Opencv。我再次運行代碼,沒有問題。

+0

我從這裏下載了windows版本http://opencv.org/releases.html,但我仍然得到相同的東西 – luckyging3r

+1

還有一點。我的殺毒軟件阻止了網絡攝像頭訪問軟件。我禁用了這個屬性並解決了。 –

+0

我甚至在六個不同的時間檢查過我的殺毒軟件,並且在任何地方都排除了我的Visual Studio目錄。 **但是,卸載我的殺毒軟件的確有訣竅...... **爲什麼這個突然發生在經過幾個月的工作之後我不知道。這花了我太多的時間來弄清楚。知道我的殺毒軟件可以停止不必要的網絡攝像頭窺視,這還算不錯。謝謝你的幫助。 – luckyging3r