2011-08-24 92 views
3

我想用OpenCV 2.3訪問RGB中的像素。 我想這樣,但它像每個像素是相等的幀後幀,因爲我沒有輸出。圖像來自我的攝像頭,我可以看到它們。 Btw RED = 0;使用Mat OpenCV訪問像素

THX

Mat frame; 
Mat oldFrame; 

VideoCapture cap(0); 
cap >> oldFrame; 
sumFramePix = oldFrame.cols * oldFrame.rows; 
nbChannels = oldFrame.channels(); 
cout << "NbcHANNELs : " << nbChannels << endl; 
imshow("Video 1", oldFrame); 

while(1) 
{ 
    cap >> frame; 
    imshow("Video 1", frame); 

    for(int i=0; i<frame.rows; i++) 
    { 
     for(int j=0; j<frame.cols; j++) 
     { 
      if (frame.ptr<uchar>(i)[nbChannels*j+RED] < oldFrame.ptr<uchar>(i)[nbChannels*j+RED]) 
      { 
       cout << "==============-"; 
      } 
     } 
    } 
    oldFrame = frame; 

    if(waitKey(300) >= 0) break; 
} 

回答

2

變化

oldFrame = frame; 

oldFrame = frame.clone(); 

您正在創建指向同一數據的兩個墊對象。 clone()進行深層複製。

+4

更好地使用'frame.copyTo(oldFrame)'來避免每個幀的內存重新分配。 –

+0

好點,謝謝。 +1 – SSteve