1. 程式人生 > >學習OpenCV3——第五章:矩陣操作

學習OpenCV3——第五章:矩陣操作

一、矩陣還可以做很多事情

由前面的章節可知,矩陣類的成員函式可以進行很多基本的操作。然而,除此以外,也有很多操作被表示為“友元”函式,它們的輸入為矩陣型別,或者輸出為矩陣型別,或者輸入輸出同為矩陣型別。這些函式及其引數將在表5-1介紹。

表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可以完成的大量基本操作,包括矩陣、影象、和多維矩陣等。