2015-07-21 25 views

回答

1

因爲你的形象是CV_8UC1類型的運算符*定義,結果總是會在[0,255]。

的實際操作是在matop.cpp

MatExpr operator * (const Mat& a, double s) 
{ 
    MatExpr e; 
    MatOp_AddEx::makeExpr(e, a, Mat(), s, 0); 
    return e; 
} 

一旦MatExpr返回,它將被轉換爲正確的類型,並轉換從floatuchar在[0255]總是給值。

由於轉換使用saturate_cast,超過255的值會一直飽和到255

您需要使用CV_32FC1CV_64FC1矩陣得到「正確」的價值觀。

+0

我不明白轉換的細節。如果結果將浮點數大於255,它將轉換爲範圍[0 255]中的隨機值,或者在uchar中始終爲255。 – mrgloom

+0

@mrgloom,看到更新的答案。始終爲255,因爲轉換將使用saturate_cast – Miki