Доступ к пикселям с помощью Mat OpenCV - PullRequest
3 голосов
/ 25 августа 2011

Я хотел бы получить доступ к пикселям в RGB с помощью OpenCV 2.3.Я пытаюсь так, но все пиксели равны кадр за кадром, потому что я не получил вывод.Изображения с моей веб-камеры, и я их вижу.Кстати, красный = 0;

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;
}

1 Ответ

2 голосов
/ 25 августа 2011

Изменение

oldFrame = frame;

до

oldFrame = frame.clone();

Вы создаете два объекта Mat, которые указывают на одни и те же данные. clone() делает глубокую копию.

...