我是 OpenCV 的新手,对如何以正确的方式访问 MAt 有点困惑。
我有两个 IplImages revA 和 revB。我用他们的数据创建新的 Mat 并比较这些矩阵并尝试保存 Mat r 中的差异。现在我需要知道差异在哪里。
我的尝试:
revA=cvLoadImage(argv[1], 1);
revB=cvLoadImage(argv[2],1);
IplImage* changeMap = cvCreateImage(cvGetSize(revA), IPL_DEPTH_8U, 1);
cv::Mat a(revA);
cv::Mat b(revB);
cv::Mat r(changeMap);
cv::compare(a, b, r, CV_CMP_EQ);
imshow( "changes", r);
我看到窗口中存在差异,它们看起来也正确,但是当我尝试执行以下代码之类的操作时,我从来没有找到不是 255 的值...
for(int i=0; i<r.rows; i++){
for(int j=0; j<r.cols; j++){
cv::Vec3b c = r.at<cv::Vec3b>(0,0);
if(c[0] != 255 || c[1] != 255 || c[2] != 255){
printf("%d %d %d\n", c[0], c[1], c[2]);
}
}
}
有人可以弄清楚,我做错了什么吗?