【发布时间】:2014-09-09 07:51:10
【问题描述】:
for (int row = 0; row < curf->rows; row++)
{
for (int col = 0; col < curf->cols; col++)
{
Vec3b pixcur = curf->at<cv::Vec3b>(row, col);
cout<<"Pixel values at current point"<<endl<<pixcur.val[0]<<endl<<pixcur.val[1]<<endl<<pixcur.val[2]<<endl; ###DEBUG STMT ###
Vec3b pixlast = curl->at<cv::Vec3b>(row, col);
if (abs(pixcur.val[0]-pixlast.val[0])>checkval ||
abs(pixcur.val[1]-pixlast.val[1])>checkval ||
abs(pixcur.val[2]-pixlast.val[2])>checkval)
{
numPixelsDiff++;
}
}
}
这里的 curf 和 curl 是指向两个 Mat 对象的指针。我知道它们指向实际的 Mats,因为 curf->rows 和 curf->cols 的值输出实际整数。
但是我用### DEBUG STMT ### 标记的行的输出总是垃圾。 checkval 是在进入循环之前设置的变量。 vec3b 向量中的值不正确。
我也试过了
for (int row = 0; row < curf->rows; row++)
{
for (int col = 0; col < curf->cols; col++)
{
Vec3b pixcur = curf->at<cv::Vec3b>(row, col);
cout<<"Pixel values at current point"<<endl<<pixcur[0]<<endl<<pixcur[1]<<endl<<pixcur[2]<<endl; ###DEBUG STMT ###
Vec3b pixlast = curl->at<cv::Vec3b>(row, col);
if (abs(pixcur[0] - pixlast[0]) > checkval ||
abs(pixcur[1] - pixlast[1]) > checkval ||
abs(pixcur[2] - pixlast[2]) > checkval)
{
numPixelsDiff++;
}
}
}
它再次只输出垃圾符号。
我在这里做错了吗?我应该检查其他东西吗?我是 opencv 的完整新手,因此我将不胜感激。
【问题讨论】: