1. 程式人生 > >opencv學習日常之“Saturation Casting“轉換saturate_cast()

opencv學習日常之“Saturation Casting“轉換saturate_cast()

“Saturation Casting“轉換saturate_cast<>()

在opencv中,對計算式進行計算的時候經常會出現值溢位(上溢位或下溢位),尤其是對無符號數值進行加減操作時。opencv中使用Saturation Casting“轉換很好的解決這個問題,使用saturate_cast<>(),opencv對陣列或矩陣進行代數運算或其他操作時,會自動檢測underflows and overflows,當結果上溢位時就會用最大的可用值代替,當下溢位時就會用最小的可用值代替。

saturate_cast<>():<>中放轉換後的資料型別。()中是計算式
例如:

uchar& Vxy = m0.at<uchar>( y, x );
Vxy = cv::saturate_cast<uchar>((Vxy-128)*2 + 128);}

假如Vxy=10,則(Vxy-128)*2 + 128的結果為-108,通過轉換後Vxy=0