2017-06-15 14 views
0

opencvを使用して画像を表示すると常に灰色の画面が表示され、画像はカメラからキャプチャされます。どんな助け?カメラからの入力を取得するopencv C++

#include "stdafx.h" 
#include <opencv2\opencv.hpp> 
#include <opencv2\imgcodecs.hpp> 

using namespace cv; 

cv::Mat takePicture() { 
cv::Mat pic; 
VideoCapture cam(0); 
while (!cam.isOpened()) { 
    std::cout << "Failed to make connection to cam" << std::endl; 
    VideoCapture cam(0); 
} 
cam >> pic; 
return pic; 
} 
int main() 
{ 

cv::Mat pic1; 

pic1 = takePicture(); 

imshow("camera", pic1); 

} 
+0

あなたは[ 'waitKey()'](http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.htmlを使用する必要がありますか? imshow()を使ってウィンドウに表示されるイメージを取得した後に、highlight = waitkey#waitkeyを実行します。詳細[ここ](https://stackoverflow.com/questions/12452118/what-does-waitkey-30-mean-in-opencv)しかし、それはあなたの問題ではないかもしれません。私は前に尋ねられたように、これを重複としてフラグを立てて答えを持っています。 –

+3

[OpenCV - ライブカメラを表示しないウェブカメラ、代わりにグレーの画面が表示される可能性があります](https://stackoverflow.com/questions/43726804/opencv-webcam-imshow-not-displaying-live-feed-gray-screen-instead ) –

+0

@AlexanderReynoldsありがとう!それが私の問題を解決しました。 –

答えて

0

カメラの初期化に時間が必要です。 たぶん、あなたは、このようにコードを変更する必要があります。

#include "stdafx.h" 
#include <opencv2\opencv.hpp> 
#include <opencv2\imgcodecs.hpp>  
VideoCapture cam(0); 
cv::Mat pic; 
cv::Mat takePicture(){ 
    while (!cam.isOpened()) { 
     std::cout << "Failed to make connection to cam" << std::endl; 
     cam.open(0); 
    } 
    cam>>pic; 
    return pic; 
} 
int main(){ 
    cv::waitKey(1000); 
    cv::Mat pic1; 
    pic1 = takePicture(); 
    imshow("camera", pic1); 
    cv::waitKey(); 
} 
関連する問題