kali ini lagi mau nyatet tentang cv::Mat.
cv::Mat adalah sebuah class yg bisa kita bayangkan sebagai sebuah matrix.
cara bikinnya sih gampang.
cv::Mat A;
isi matrix A dengan gambar.
A=cv::imread(“C:\nai.jpg”);
cara lainnya:
cv::Mat A(400.600, CV_8UC3, Scalar(0,0,255));
ini akan membuat matrix 2 dimensi dengan ukuran 400×600, dengan pertitik berisi 8 bit (uchar) sebanyak 3 biji. nilai defaultnya adalah(0,0,255).
int sz[3] = {2,2,2};
Mat A(3,sz, CV_8UC(1), Scalar::all(0));
contoh di atas juga membuat matrik A. contoh tersebut membuat matrik A dengan lebih dari 2 dimensi. (gak ngerti yang ini, hii)
Mat A;
A.create(4,4, CV_8UC(2));//menggunakan fungsi create
Mat RowClone = C.row(1).clone();//mengcloning bari kedua.
perlu diingat:
cv::Mat B = A;
cv::Mat C(A);
kedua object tersebut sebenernya masih object yang sama dengan A. jika kita mengubah salah satu dari object ketiganya(A,B atau C) maka ketiga-tiganya akan berubah. itu karena sebenernya merujuk ke memori yang sama. 🙂
bisa juga kita membuat sebuah objek yang sebenernya juga mengarah ke A tapi dengan ukuran yang berbeda. anggap matrik yang telah kita buat di atas dimensinya 400×600. kita akan membuat objek Mat yg sebenernya masih merujuk ke memori matrik A tapi ukurannya lebih kecil.
cv::Mat D(A, cv::Rect(10,10,100,200));
nah object D tersebut sebenernya adalah sebuah object yang mengarah ke memori matrix A dengan posisi 10,10 dengan ukuran 100×200. jadi jika kita mengubah semua isi matrik D dengan 255. maka otomatis pada matrix A akan ada kotak seukuran 100×200 berwarna putih di posisi (10,10).
kalau mau bikin objek kopian mesti pakai fungsi clode() atau copyTo(),
cv::Mat J;
j=A.clone();
cv::Mat K;
A.copyTo(K);
Object dari cv::Mat dapat langsung di print ke cout.
count<<“Matrik A adalah”<<A<<endl;