2016-10-07 5 views
0

이미지를 캡처하여 회색 이미지로 사용하고 싶습니다. 내 코드 frame RGB 이미지 (삼차원) 인에서이미지가 올바르게 검색되지 않습니다.

CvCapture *p = cvCreateCameraCapture(0); 
cvSetCaptureProperty(p, CV_CAP_PROP_FRAME_WIDTH, 1024); 
cvSetCaptureProperty(p, CV_CAP_PROP_FRAME_HEIGHT, 1024); 
IplImage* frame; 
for (int i = 0; i < 25; i++) 
{ 
    frame = cvQueryFrame(p); 
} 
cvSaveImage("test.jpg", frame); 

Mat r = imread("test.jpg", 1); 
Mat inputImage; 
cvtColor(r, inputImage, COLOR_RGB2GRAY); 

:

나는 다음과 같은 코드가 있습니다. r로 저장된 이미지를 읽을 때 두 개의 채널이 있습니다.

  1. 왜 이런 일이 발생 :

    나는이 개 질문이?

  2. 회색 레벨의 1 차원 이미지는 어떻게 만들 수 있습니까?
+0

"어떻게 1 차원 이미지를 가질 수 있습니까?"- 1 픽셀 라인을 의미합니까? – Olaf

+0

실제로 RGB에는 3 페이지가 있습니다. 그레이 레벨 이미지에는 한 페이지가 있습니다. – Media

+1

응? 페이지 ?? 페이지가 없습니다. 일반적으로 사용되는 문구에 익숙해지기를 권장 할 수 있습니까? 그것은 또한 불분명 한 질문을하는 대신에 스스로 자원을 찾을 수 있도록 도울 것입니다. – Olaf

답변

1

첫 번째 질문은 사용중인 카메라/하드웨어를 확인해야합니다. 두 번째 부분에 대한

cout << img->nChannels << endl; 

:

Mat r = imread("test.jpg", 1); 

Mat r = imread("test.jpg", 0); 

행 :

회색 채널 변경과 같은 화상을 판독하기 위해 프레임을 실행하여 2 개 채널을 갖는 경우에도, 확인 보기 : docs

관련 문제