2015-03-30 42 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;