轉載於:http://blog.csdn.net/iracer/article/details/49204147
函數:
void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const;
參數:
m – 目標矩陣。如果m在運算前沒有合適的尺寸或類型,將被重新分配。
rtype – 目標矩陣的類型。因爲目標矩陣的通道數與源矩陣一樣,所以rtype也可以看做是目標矩陣的位深度。如果rtype爲負值,目標矩陣和源矩陣將使用同樣的類型。
alpha – 尺度變換因子(可選)。
beta – 附加到尺度變換後的值上的偏移量(可選)。
描述:
函數將源矩陣中的像素值轉換爲目標類型。最後會使用溢出保護函數saturate_cast<> ,以避免轉換過程中可能出現的溢出。函數執行如下運算:
示例:
在應用分水嶺算法分割圖像時,標記圖像爲32位有符號整型CV_32S變量(以便定義超過255個標籤,每個值標記一類物體,如255標記目標,128標記背景,0標記未知等等)構成的矩陣markers,想要將標記圖像顯示出來必須轉換其數據類型。
markers.convertTo(tmp,CV_8U,255,255);
將矩陣markers轉換爲CV_8U類型的矩陣tmp:tmp(x,y)= markers(x,y)*255+255.這樣,將圖像做線性變換,使值爲-1的像素變爲0(-1*255+255=0)。值大於255的像素將賦值爲255,這是因爲CV32S轉換爲無符號CV_8U時,應用了飽和度運算。