无法使用opencv计算像素差异

时间:2014-09-09 15:07:32

标签: c++ opencv

我被迫在视频帧之间逐像素地计算像素差异。 我将pixeldifference变量初始化为0.(假设所有帧都是视频中的有效帧) 问题是lastFrame和frame总是相同的,这意味着带有cout语句的代码"像素计数递增"永远不会被触发。我知道几个帧可以是相同的但我从来没有看到输出语句甚至一次。这让我相信这两个帧总是相同的。我应该做点别的吗?我很感激任何指导。我对opencv很新(在其中有一个不好的编码实践是出于调试目的)

Mat lastFrame;
Mat frame;
capture.read(lastFrame);
capture.read(frame);

while(counter<tofind)
{
for(int cur_row=0_PX;cur_row<max_PX;cur_row++)
{
            for(int cur_cols=0;cur_cols<frame.cols;cur_cols++)
            {
                    Vec3b pixels_currentFrame = frame.at<cv::Vec3b>(cur_row, cur_cols);
                    Vec3b pixels_lastFrame = lastFrame.at<cv::Vec3b>(cur_row, cur_cols);
                    bCur=int(pixels_currentFrame.val[0]);
                    gCur=int(pixels_currentFrame.val[1]);
                    rCur=int(pixels_currentFrame.val[2]);
                    bPrev=int(pixels_lastFrame.val[0]);
                    gPrev=int(pixels_lastFrame.val[1]);
                    rPrev=int(pixels_lastFrame.val[2]);
                    bDiff=abs(bCur-bPrev);
                    gDiff=abs(gCur-gPrev);
                    rDiff=abs(rCur-rPrev);
                    if (abs(bCur-bPrev) > checkval ||
                        abs(rCur-rPrev) > checkval ||
                        abs(gCur-gPrev) > checkval)
                    {
                            pixeldifference++;
                            cout<<"Pixel count incremented"<<endl;
                    }
            }

}
lastFrame=frame;
capture.read(frame);
/*
    some other stuff happens here
*/
counter++;
}

0 个答案:

没有答案