এখানে রানটাইমে আপনার ওপেনসিভি ম্যাট্রিক্স সনাক্তকরণে সহায়তা করতে ব্যবহার করতে পারেন এমন একটি কার্যকরী ফাংশন। আমি কমপক্ষে, ডিবাগিংয়ের জন্য এটি দরকারী মনে করি।
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;
}
যদি M
বিভিন্ন ধরণের হয় তবে Mat
আপনি এটিকে এভাবে কল করতে পারেন:
string ty = type2str( M.type() );
printf("Matrix: %s %dx%d \n", ty.c_str(), M.cols, M.rows );
আউটপুট ডেটা যেমন:
Matrix: 8UC3 640x480
Matrix: 64FC1 3x2
এটি লক্ষণীয় যে ম্যাট্রিক্স পদ্ধতিও রয়েছে Mat::depth()
এবং Mat::channels()
। এই ফাংশনটি সেই দুটি মানের সংমিশ্রণ থেকে একটি মানব পাঠযোগ্য ব্যাখ্যার এক সহজ উপায় যাঁর বিটগুলি একই মানটিতে সঞ্চিত।
depth()
এবংchannels()
এর পরিবর্তে ব্যবহার করার,type()
যা ডাটাটাইপ ও চ্যানেল সংখ্যার মধ্যে একটি জটিল মিশ্রণ ফেরৎ।