这可能是基本的,但有可能知道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
的通道数?这有什么功能吗?或者是否可以通过程序员编写的任何其他方法?请帮帮我。
提前致谢。
答案 0 :(得分:34)
致电Mat.channels()
:
cv::Mat img(1,1,CV_8U,cvScalar(0));
std::cout<<img.channels();
输出:
1
这是频道数。
另外,试试:
std::cout<<img.type();
输出:
0
属于CV_8U(在第542行查看here)。每个types_c.h
的研究文件define
。
答案 1 :(得分:8)