基礎——OpenCV—矩陣數據類型轉換cv::convertTo

轉載於: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時,應用了飽和度運算。

發佈了73 篇原創文章 · 獲贊 17 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章