Berikut adalah fungsi praktis yang dapat Anda gunakan untuk membantu mengidentifikasi matriks terbuka Anda pada waktu proses. Saya merasa berguna untuk debugging, setidaknya.
string type2str(int type) {
string r;
uchar depth = type & CV_MAT_DEPTH_MASK;
uchar chans = 1 + (type >> CV_CN_SHIFT);
switch ( depth ) {
case CV_8U: r = "8U"; break;
case CV_8S: r = "8S"; break;
case CV_16U: r = "16U"; break;
case CV_16S: r = "16S"; break;
case CV_32S: r = "32S"; break;
case CV_32F: r = "32F"; break;
case CV_64F: r = "64F"; break;
default: r = "User"; break;
}
r += "C";
r += (chans+'0');
return r;
}
Jika Msebuah var tipe MatAnda dapat menyebutnya seperti ini:
string ty = type2str( M.type() );
printf("Matrix: %s %dx%d \n", ty.c_str(), M.cols, M.rows );
Akan mengeluarkan data seperti:
Matrix: 8UC3 640x480
Matrix: 64FC1 3x2
Perlu dicatat bahwa ada juga metode Matrix Mat::depth()dan Mat::channels(). Fungsi ini hanyalah cara praktis untuk mendapatkan interpretasi yang dapat dibaca manusia dari kombinasi dua nilai yang semua bitnya disimpan dalam nilai yang sama.
depth()danchannels(), daripada menggunakantype()yang mengembalikan campuran kompleks antara tipe data dan jumlah saluran.