opencv學習筆記(2)----矩陣運算


Mat類內部實現
設爲A,B爲Mat類型,s是Scalar類型,a是一個實數。下面列出關於Mat的常用運算:
1.矩陣加減: A+B,A-B,A+s,A-s,s+A,s-A,-A.
2.矩陣乘以實數: A*a,a*A
3.逐元素乘除: A.mul(B),A/B,a/A
4.矩陣倒置: A.t()
5.矩陣的逆: A.inv()
6.矩陣比較: A comp B,A comp a,a comp A。這裏comp包括 >,>=,==,!=,<=,<。得出的結果是一個單通道8位的矩陣,元素的值爲255或0。
7.矩陣位操作: A logic B, A logic s,s logic A。這裏logic包括:&,|,^
8.向量的差乘和內積: A.cross(B),A.dot(B);
*爲防止溢出,矩陣乘法的矩陣元素類型至少是float,即CV_32F以上

外部函數實現:
以下四個函數分別實現矩陣逐像素的加、減、乘、除:
void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)`
void subtract(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)
void multiply(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1 )
void divide(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1)
*src1和src2可以爲Mat或者Scalar,如果一個是Mat,一個Scalar,則Mat的元素的通道數要和Scalar的維數相同。dtype可以控制輸出數組的元素類型。注意,當輸出類型是CV_32S的時候,不進行溢出處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章