學習OpenCV3——第五章:矩陣操作
阿新 • • 發佈:2018-12-19
一、矩陣還可以做很多事情
由前面的章節可知,矩陣類的成員函式可以進行很多基本的操作。然而,除此以外,也有很多操作被表示為“友元”函式,它們的輸入為矩陣型別,或者輸出為矩陣型別,或者輸入輸出同為矩陣型別。這些函式及其引數將在表5-1介紹。
函式名稱 | 描述 |
---|---|
cv::abs() | 計算矩陣中所有元素的絕對值 |
cv::absdiff() | 計算兩個矩陣差值的絕對值 |
cv::add() | 實現兩個矩陣逐元素相加 |
cv::addWeighted | 實現兩個矩陣逐元素加權求和(alpha blending) |
cv::bitwise_and | 計算兩個矩陣逐元素按位與 |
cv::bitwise_not | 計算兩個矩陣逐元素按位非 |
cv::bitwise_or | 計算兩個矩陣逐元素按位或 |
cv::bitwise_xor | 計算兩個矩陣逐元素按位異或 |
cv::calcCovarMatrix() | 計算一組n維向量的協方差 |
cv::cartToPolar() | 計算二維向量的角度和幅度 |
cv::checkRange() | 檢查矩陣的無效值 |
cv::compare() | 對兩個矩陣中的所有元素應用所選擇的比較運算子 |
cv::completeSymm() | 通過將一半元素複製到另一半來使矩陣對稱 |
cv::convertScaleAbs() | 縮放矩陣,取絕對值,然後轉換為8位無符號數 |
cv::countNonZero() | 計算矩陣中非零元素個數 |
cv::arrToMat() | 將2.1版本的矩陣型別轉換為cv::Mat |
cv::dct() | 計算矩陣的離散餘弦變換 |
cv::determinant() | 計算方陣的行列式 |
cv::dft() | 計算矩陣的離散傅立葉變換 |
cv::divide() | 實現兩個矩陣逐元素相除 |
cv::eigen() | 計算方陣的特徵值和特徵向量 |
cv::exp() | 實現矩陣的逐元素求指數冪 |
cv::extractImageCOI() | 從2.1版本的矩陣型別中提取單個通道 |
cv::flip() | 繞選定的軸翻轉矩陣 |
cv::gemm() | 實現廣義矩陣乘法 |
cv::getConvertElem() | 獲取單畫素型別轉換函式 |
cv::getConvertScaleElem() | 獲取單畫素型別的轉換和縮放函式 |
cv::idct() | 計算矩陣的離散餘弦逆變換 |
cv::idft() | 計算矩陣的離散傅立葉逆變換 |
cv::inRange() | 測試矩陣的元素是否再兩個其他矩陣的值之間 |
cv::invert() | 求方陣的逆 |
cv::log() | 計算矩陣逐元素的自然對數 |
cv::magnitude() | 計算二維向量的幅度 |
cv::LUT() | 將矩陣轉換為查詢表的索引 |
cv::Mahalanobis() | 計算兩個向量之間的馬氏距離 |
cv::max() | 計算兩個矩陣逐元素的最大值 |
cv::mean() | 計算矩陣元素的平均值 |
cv::meanStdDev() | 計算矩陣元素的均值和和標準差 |
cv::merge() | 將多個單通道矩陣合併成一個多通道矩陣 |
cv::min() | 計算兩個矩陣逐元素的最小值 |
cv::minMaxLoc() | 在矩陣中尋找最小值和最大值 |
cv::mixChannels() | 打亂從輸入矩陣到輸出矩陣的通道 |
cv::mulSpectrums() | 計算兩個傅立葉譜的逐元素乘積 |
cv::multiply() | 計算兩個矩陣的逐元素乘積 |
cv::mulTransposed() | 計算矩陣和矩陣的轉置的乘積 |
cv::norm() | 計算兩個矩陣的歸一化相關係數 |
cv::normalize() | 將矩陣中的元素標準化到某一數值內 |
cv::perspectiveTransform() | 實現一系列向量的透視矩陣變化 |
cv::phase() | 計算二維向量的方向 |
cv::polarToCart() | 已知角度和幅度,求出對應的二維向量 |
cv::pow() | 對矩陣內的每個元素求冪 |
cv::randu() | 用均勻分佈的隨機數填充給定的矩陣 |
cv::randn() | 用正態分佈的隨機數填充給定的矩陣 |
cv::randShuffle() | 隨機打亂矩陣元素 |
cv::reduce() | 通過特定的操作將二維矩陣縮減為向量 |
cv::repeat() | 將一個矩陣的內容複製到另一個矩陣 |
cv::saturate_cast<>() | 轉換原始型別(模板函式) |
cv::scaleAdd() | 逐元素計算兩個矩陣的和並且第一個矩陣可以選擇縮放 |
cv::setIdentity() | 將矩陣中對角線上的元素設為1,其他置0 |
0cv::solve() | 求出線性方程的解 |
cv::solveCubic() | 找到(唯一的)三次方程的解 |
cv::solvePoly() | 找到多項式方程的復根 |
cv::sort() | 在矩陣中排序任意行或列的元素 |
cv::sortIdx() | 與cv::sort()的目的相同,除了矩陣是未修改的,並返回索引 |
cv::split() | 將一個多通道矩陣分割成多個單通道矩陣 |
cv::sqrt() | 計算矩陣逐元素的平方根 |
cv::subtract() | 實現兩個矩陣逐元素相減 |
cv::sum() | 對矩陣中的所有元素求和 |
cv::theRNG() | 返回隨機數生成器 |
cv::trace() | 計算一個矩陣的跡 |
cv::transform() | 在矩陣的每個元素上應用矩陣變換 |
cv::transpose() | 矩陣的轉置運算 |
具體使用例項可自行百度。
二、小結
在本章中,我們介紹了利用OpenCV最重要的矩陣結構cv::Mat可以完成的大量基本操作,包括矩陣、影象、和多維矩陣等。