Могу ли я определить количество каналов в cv:: Mat Opencv
Это может быть рудиментарно, но можно ли узнать, сколько каналов имеет cv::Mat
? Например, мы загружаем изображение RGB, я знаю, что есть 3 канала. Я выполняю следующие операции, только чтобы получить лапласиан изображения, который прямо из документации Opencv.
int main(int argc, char **argv)
{
Mat src = imread(argv[1],1),src_gray,dst_gray,abs_dst_gray;
cvtColor(src,src_gray,COLOR_BGR2GRAY);
GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );
Laplacian(src_gray,dst_gray,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
convertScaleAbs(dst_gray,abs_dst_gray);
}
После преобразования в оттенки серого у нас должен быть только один канал. Но как определить количество каналов abs_dst_gray
в программе? Есть ли какая-нибудь функция для этого? Или это возможно с помощью любого другого метода, который должен быть написан программистом? Пожалуйста, помогите мне здесь.
Спасибо заранее.
Ответы
Ответ 1
Вызов Mat.channels()
:
cv::Mat img(1,1,CV_8U,cvScalar(0));
std::cout<<img.channels();
Вывод:
1
которое представляет собой количество каналов.
Кроме того, попробуйте:
std::cout<<img.type();
Вывод:
0
который принадлежит CV_8U (посмотрите здесь в строке 542). Файл исследования types_c.h
для каждого define
.
Ответ 2
вы можете использовать:
Mat::channels()
http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-channels