Catatan OpenCV(1): cv::Mat

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;

ngumpulin ide

1. pengen nerapin teori-teori operational di counting system.

2. pengen bikin aplikasi untuk para bis agar bisa menjaga jarak antar bis. sekalia aplikasinya bisa langsung terintegrasi ke database po. plus bisa tukar penumpang. 🙂

3. penghemat data untuk keperluan navigasi.