如何有效地验证2个UMat(和Mat)对象是否相同并指向相同的数据,这意味着它们具有相同的标头?我需要一个isShallowEqual()函数,如下所示:
int someData [4] {1,2,3,4};
Mat m1 (2, 2, CV_32F, someData);
UMat u1;
UMat u2;
UMat u3;
m1.copyTo(u1);
//isShallowEqual(u1,u1) should return true
u2=u1;
//isShallowEqual(u1,u2) should return true
u1.copyTo(u3);
//isShallowEqual(u1,u3) should return false
以及Mats的类似情况:
int someData [4] {1,2,3,4};
Mat m1 (2, 2, CV_32F, someData);
UMat m2, m3;
//isShallowEqual(m1,m1) should return true
m2=m1;
//isShallowEqual(m1,m2) should return true
m1.copyTo(m3);
//isShallowEqual(m1,m3) should return false
我可能会通过Mats来检查大小,类型,步长和.data字段,但不知道如何获取与UMats等效的.data字段
我已经尝试使用memcmp,但是
memcmp(&m1,&m2, sizeof(m1))
不会返回0(对于UMat同样)
在Mat的情况下,我比较了公共属性:
所有结果都等于m1和m2。