2013-11-20 3 views
0

OpenCV 2.4.6을 사용하고 있습니다. 나는 인터넷을 통해 카메라에서 프레임을 얻는 몇 가지 예를 발견했다. 그것은 잘 작동합니다 (화면에 내 추한 얼굴을 표시합니다). 그러나, 나는 절대적으로 프레임으로부터 픽셀 데이터를 얻을 수 없다. 나는 약간의 주제를 여기에서 발견했다 : http://answers.opencv.org/question/1934/reading-pixel-values-from-a-frame-of-a-video/ 그러나 그것은 나를 위해 작동하지 않는다.OpenCV - 카메라 장치에서 픽셀 데이터 가져 오기

코드는 다음과 같습니다. 주석 처리 된 부분에서 잘못된 점을 지적했습니다.

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 

int main() { 
    int c; 
    IplImage* img; 
    CvCapture* capture = cvCaptureFromCAM(1); 
    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    while(1) { 
     img = cvQueryFrame(capture); 

     uchar* data = (uchar*)img->imageData; // access violation 

     // this does not work either 
     //Mat m(img); 
     //uchar a = m.data[0]; // access violation 

     cvShowImage("mainWin", img); 
     c = cvWaitKey(10); 
     if(c == 27) 
      break; 
    } 
} 

몇 가지 제안 사항을 제공해 주시겠습니까?

답변

2

IplImage 대신 최신 Mat 구조를 사용하는 것이 좋습니다. 질문에 C++ 태그가 추가되어 있기 때문입니다. 귀하의 작업에 Matdata 구성원을 사용할 수 있습니다 - 내부 Mat 저장소를 가리 킵니다. 예 : Mat img; uchar* data = img.data;. 여기에 전체 예 그것은 발생

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 

int main() { 
    int c; 
    Mat img; 
    VideoCapture capture(0); 
    namedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    bool readOk = true; 

    while(capture.isOpened()) { 

     readOk = capture.read(img); 

     // make sure we grabbed the frame successfully 
     if (!readOk) { 
      std::cout << "No frame" << std::endl; 
      break; 
     } 

     uchar* data = img.data; // this should work 

     imshow("mainWin", img); 
     c = waitKey(10); 
     if(c == 27) 
      break; 
    } 
} 
+0

이다 (나는 UCHAR 제거 할 경우에도 * 데이터 ... 일부) 마이크로 소프트 C++ 예외 : 이력서 :: 예외 메모리 위치 0x002BF794에서 마지막 라인을 가리키는 throw.cpp 파일을 (열립니다 파일) Visual Studio 2012에서 : – tobi

+0

hmm ..이 시스템에서 잘 실행되는 예외가 throw됩니다. 예제에서와 같이'IplImage' 대신'cv :: Mat'을 사용하고 있습니까? – Alexey

+0

예, 있습니다. 내가 본 것에서 imshow()를 제거해도 예외가 발생하지는 않지만 분명히 어떤 이미지도 보이지 않는다. – tobi

관련 문제