c++ - 我可以确定 cv::Mat Opencv 中的 channel 数吗

标签 c++ opencv mat

这可能是初步的,但是否有可能知道 cv::Mat 有多少个 channel ?例如,我们加载一个 RGB 图像,我知道有 3 个 channel 。我做了以下操作,只是为了得到图像的拉普拉斯算子,它直接来自 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);
}

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

提前致谢。

最佳答案

调用Mat.channels():

cv::Mat img(1,1,CV_8U,cvScalar(0));
std::cout<<img.channels();

输出:

1

这是 channel 的数量。

另外,试试:

std::cout<<img.type();

输出:

0

属于 CV_8U(查看 here 在第 542 行)。为每个 define 研究文件 types_c.h

关于c++ - 我可以确定 cv::Mat Opencv 中的 channel 数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363886/

相关文章:

c++ - 如何在列表末尾添加尾元素

c++ - QDataStream : Overloading >> for decorated QVector

c++ - 如何将 mat 图像转换为字符串(array 2d<rgb pixel>)?

java - OpenCV 图像描述符到 JSON

opencv - 红色调过滤器 - emgucv/opencv

c++ - OpenCV - 获取图像的一部分

c++ - move 语义何时适用于 std::move?

c++ - 在 openGL 中正确混合的问题

opencv - OpenCV:如何从adaboost中获取弱者

Opencv检测不同时间拍摄的两张照片之间的变化