У заголовку OpenCV " types_c.h " є набір визначень, які генерують їх, формат. CV_bits{U|S|F}C<number_of_channels>
Так, наприклад, CV_8UC3
означає 8 бітові неподписані символи, 3 кольорові канали - кожен з цих імен відображається на довільне ціле число з макросами цього файлу.
Редагувати: див. " Тип_c.h ", наприклад:
#define CV_8UC3 CV_MAKETYPE(CV_8U,3)
#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
eg.
depth = CV_8U = 0
cn = 3
CV_CN_SHIFT = 3
CV_MAT_DEPTH(0) = 0
(((cn)-1) << CV_CN_SHIFT) = (3-1) << 3 = 2<<3 = 16
Отже, CV_8UC3 = 16
але ви не повинні використовувати це число, просто перевірте, type() == CV_8UC3
чи потрібно знати, що таке внутрішній масив OpenCV.
Пам'ятайте, що OpenCV перетворить jpeg в BGR (або сіру шкалу, якщо ви перейдете "0" до imread
), тому він нічого не розповість про вихідний файл.
depth()
таchannels()
замість того, щоб використовувати,type()
яка повертає складну суміш між типом даних та кількістю каналів.