我對opencv庫很陌生,但自從2.x以來仍然對C++ Mat類感到困惑。opencv Mat數據類型轉換和算術
的問題,我面對:
類墊的非模板版本運行時類型的,但目前還沒有的功能,可以顯示一個墊目標的符號名稱,只有一個
cv::Mat::type()
,這返回整數。如果一個矩陣是CV_8U或無符號字符類型,那麼我做加法算術......它是否有可能導致溢出?或者opencv足夠聰明,可以轉換數據類型,並做所謂的「飽和算術」?例如的
unsigned char a = 255; unsigned char b = a+a; // == 255
操作+一:
unsigned char b = (unsigned char) clipTo_0_255((float)a + (float)a));
如果我想避免的
class Mat_<_Tp>
微妙cv::Mat::at<_Tp>
,大多數解決方案建議使用衍生模板版本。但_Tp必須C++原始類型,我不知道原始類型和CvMat類型系統之間的映射......(也許它是直截了當的...)是opencv數據類型轉換等效於C/C++類型鑄造?例如
float a = 1.5; int b = (int) a; // == 1
int a = 2; float b = static_cast<int>(a); // == 2.0
順便說一句...實驗顯示許多opencv函數將返回與CV_8U類型的墊... – Bossliaw 2011-04-17 15:27:59