私はOpenCVを初めて使用し、正しい方法でMAtにアクセスする方法について少し混乱しています。
2つのIplImagesrevAとrevBがあります。私はそれらのデータを使用して新しいマットを作成し、それらの行列を比較して、マット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]);
}
}
}
誰かが私が間違っていることを理解できますか?