2015-03-30 67 views

回答

1

您可以尝试compare,它可以使用CMP_EQ检查矩阵和标量(或其他矩阵)之间的相等性。

不幸的是,compare具有恼人的特性,即满足比较运算符的值被设置为255而不是1或原始值,因此您必须划分以获得Matlab行为。

Mat imTemp = (Mat_<double>(3,3) << 9,7,4,4,9,6,2,0,1); 
double maxInd = 9; 
cout << "imTemp Original:" << endl; 
cout << imTemp << endl; 

compare(imTemp, Scalar(maxInd), imTemp, CMP_EQ); 
imTemp = imTemp*maxInd/255; 

cout << "imTemp Compared:" << endl; 
cout << imTemp << endl; 

输出:

imTemp Original: 
[9, 7, 4; 
    4, 9, 6; 
    2, 0, 1] 
imTemp Compared: 
[9, 0, 0; 
    0, 9, 0; 
    0, 0, 0] 

您也可以直接使用比较操作,以获得相同的结果(与255相同的行为):

Mat imTemp = (imTemp == maxInd)*maxInd/255;