2011-11-17 3 views
1

Visual C++ 2008 Express로 opencv 2.1 프로그램을 코딩하고 있습니다. 각 픽셀의 각 픽셀 색상 데이터를 가져 와서 픽셀별로 수정하고 싶습니다.nchannel()은 컬러 비디오 이미지의 경우에도 항상 1을 반환합니다.

나는 "frmSource.channels();"코드가 " 매트 frmSource의 색상 채널을 반환하지만 3이나 4가 아닌 절대 컬러 비디오 이미지 인 경우에도 항상 1을 반환합니다.

잘못 되었나요?

내가 잘못하면 각 픽셀의 각 색상 구성 요소 데이터를 가져 오는 방법을 안내해주세요.

또한 "get (CV_CAP_PROP_FRAME_COUNT)"의 총 프레임 수는 예상 한 프레임 수보다 훨씬 크기 때문에 "get (CV_CAP_PROP_FRAME_COUNT) by get (CV_CAP_PROP_FPS Frame rate.)"을 나눌 수 있습니다. 결과는 내가 예상 한대로.

나는 프레임이 영화의 컷과 초당 30 프레임과 같은 것을 알고있다. 그게 맞습니까?

void fEditMain() 
{ 

VideoCapture vdoCap("C:/Users/Public/Videos/Sample Videos/WildlifeTest.wmv"); 

// this video file is provided in window7 

if(!vdoCap.isOpened()) 

{ 

    printf("failed to open!\n"); 

    return; 

} 

Mat frmSource; 

vdoCap >> frmSource; 

if(! frmSource.data) return; 


VideoWriter vdoRec(vRecFIleName, CV_FOURCC('W','M','V','1'), 30, frmSource.size(), true); 

namedWindow("video",1); 

// record video 

int vFrmCntNo=1; 
for(;;) 
{ 
    int vDepth = frmSource.depth(); 

    vChannel = frmSource.channels(); 

    // here! vChannel is always 1, i expect 3 or 4 because it is color image 

    imshow("video", frmSource);// frmSource Show 

    vdoRec << frmSource; 

    vdoCap >> frmSource; 

    if(! frmSource.data) 

    return; 
}   
return; 
} 
+0

'vChannel'의 유형은 무엇입니까? – karlphillip

+0

OpenCV는 버전 2.3.1입니다! 나는 당신의 버전을 업데이 트하는 것이 좋습니다. – karlphillip

답변

0

난이 귀하의 질문에 대답 할 경우 확실하지 오전하지만 IplImage를 사용하는 경우는 채널의 정확한 번호를 매우 쉽게 할뿐만 아니라 이미지를 조작합니다 다음과 같이

내 코딩입니다 . 비디오 프레임으로 구성되어

IplImage *frm = cvQueryFrame(cap); 
int numOfChannels = channelfrm->nChannels; 

을 당신은 GET (CV_CAP_PROP_FPS)를 사용하여 두 번째 전달 프레임 수를 알 수 있습니다 사용해보십시오. FPS로 프레임 수를 나누면 클립의 초 수를 얻게됩니다.

관련 문제