文章目录
- 1. 两个Vec3b点乘后相加求和:ddot()
- 2. 两个Vec3b不同却相减为0
1. 两个Vec3b点乘后相加求和:ddot()
Vec3b v1 = img.at<Vec3b>(0, 0);
Vec3b v2 = img.at<Vec3b>(0, 1);
cout << "v1:" << v1 << endl;
cout << "v2:" << v2 << endl;
cout << v1.ddot(v2) << endl;
cout << 245 * 244 + 207 * 202 + 173 * 167 << endl;输出:
v1:[245, 207, 173]
v2:[244, 202, 167]
130485
130485
2. 两个Vec3b不同却相减为0
这是由于两个Vec3b
相减,若为负数,则为置为0,如下例所示
Vec3b v1 = img.at<Vec3b>(0, 0);
Vec3b v2 = img.at<Vec3b>(0, 1);
cout << "v1:" << v1 << " v2:" << v2 << endl;
cout << "diff:" << v1 - v2 << endl;
cout << "-diff" << v2 - v1 << endl;输出:
v1:[245, 207, 173] v2:[244, 202, 167]
diff:[1, 5, 6]
-diff[0, 0, 0]
想要得到正确结果,可以将其强制类型转换为Vec3f
Vec3f v1 = img.at<Vec3b>(0, 0);
Vec3f v2 = img.at<Vec3b>(0, 1);
cout << "v1:" << v1 << " v2:" << v2 << endl;
cout << "diff:" << v1 - v2 << endl;
cout << "-diff" << v2 - v1 << endl;输出:
v1:[245, 207, 173] v2:[244, 202, 167]
diff:[1, 5, 6]
-diff[-1, -5, -6]