OpenCV中Mat的基本用法 | mat opencv
一、矩陣基礎操作:Matimage(240,320,CV8UC3);第一個引數是rows,該矩陣的行數;第二個引數是cols,該矩陣的列數;第三個引數是該矩陣元素的型別。這句話表示建立一個大小為240×320的矩陣,裡面的元素為8位unsigned型,通道數(channel)有3個。image.create(480,640,CV8UC3);分配(或重新分配)image矩陣,把大小設為480×640,型別設為CV8UC3。MatA33(3,3,CV_32F,Scalar(5));定義並初始化一個3×3的32bit浮點數矩陣,每個元素都設為5。MatB33(3,3,CV_32F);B33=Scalar(5);和上面的作用一樣。MatC33=Mat::ones(3,3,CV32F)*5.;ones函式很像...
一、矩陣基礎操作:Mat image(240, 320, CV8UC3);第一個引數是rows,該矩陣的行數;第二個引數是cols,該矩陣的列數;第三個引數是該矩陣元素的型別。這句話表示建立一個大小為240×320的矩陣,裡面的元素為8位unsigned型,通道數(channel)有3個。image.create(480, 640, CV8UC3);分配(或重新分配)image矩陣,把大小設為480×640,型別設為CV8UC3。
Mat A33(3, 3, CV_32F, Scalar(5));定義並初始化一個3×3的32bit浮點數矩陣,每個元素都設為5。
Mat B33(3, 3, CV_32F);B33 = Scalar(5);和上面的作用一樣。
Mat C33 = Mat::ones(3, 3, CV32F)*5.;ones函式很像MATLAB裡的語句吧。這句的意思是先定義一個3×3的32bit浮點數矩陣,元素全為1,所有元素再乘以5.0。
Mat D33 = Mat::zeros(3, 3, CV32F) + 5.;和上面類似,先定義個3×3的32bit浮點數矩陣,元素全為0,再將所有元素加上5.0;
double a = CV_PI/3;Mat A22 = (Mat_<float>(2, 2) << cos(a), -sin(a), sin(a), cos(a));CV_PI就是少年派的那個派。第二句這個寫法很牛x的樣子,我也沒見過,不過看樣子是建立一個2×2的float矩陣,把後面四個三角函式值分別賦給4個元素。
float B22data[] = {cos(a), -sin(a), sin(a), cos(a)};Mat B22 = Mat(2, 2, CV32F, B22data).clone();第一句建立一個普通陣列B22data,第二句建立一個2×2的32bit浮點數矩陣,並使用用B22data數組裡的值初始化,然後克隆一下賦給B22矩陣。為什麼這裡還要克隆一下,不是多此一舉嗎?不是的,用一個數組去初始化一個矩陣的話,你會發現這個矩陣引用了陣列的記憶體地址。不克隆的話,上面例程的後果是B22data陣列、...