我可以确定cv :: Mat Opencv中的通道数

Lak*_*nan 20 c++ opencv mat

这可能是基本的,但有可能知道有多少频道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);
}
Run Code Online (Sandbox Code Playgroud)

转换为灰度后,我们应该只有一个频道.但是如何确定abs_dst_gray程序中的通道数?这有什么功能吗?或者是否可以通过程序员编写的任何其他方法?请帮帮我.

提前致谢.

Lov*_*ill 39

致电Mat.channels():

cv::Mat img(1,1,CV_8U,cvScalar(0));
std::cout<<img.channels();
Run Code Online (Sandbox Code Playgroud)

输出:

1
Run Code Online (Sandbox Code Playgroud)

这是渠道数量.

另外,尝试:

std::cout<<img.type();
Run Code Online (Sandbox Code Playgroud)

输出:

0
Run Code Online (Sandbox Code Playgroud)

属于CV_8U(看看这里的线542).types_c.h每个研究文件define.

  • 威廉的联系似乎已经死了.这是一个替代品:http://ninghang.blogspot.co.uk/2012/11/list-of-mat-type-in​​-opencv.html (3认同)
  • @LakshmiNarayanan请在一个新问题中发布其他疑问. (2认同)