Можно ли определить количество каналов в 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 в программе? Есть ли какая-либо функция для этого? Или это возможно любым другим способом, который должен написать программист? Пожалуйста, помогите мне здесь.

Заранее спасибо.

12

Решение

Вызов 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,

32

Другие решения

вы можете использовать:

Mat::channels()

http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-channels

8

По вопросам рекламы [email protected]