【问题标题】:Can I determine the number of channels in cv::Mat Opencv我可以确定 cv::Mat Opencv 中的通道数吗
【发布时间】:2013-06-26 04:17:06
【问题描述】:

这可能是初步的,但有可能知道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的通道数呢?有什么功能可以做到这一点吗?或者是否有可能通过程序员编写的任何其他方法?请在这里帮助我。

提前致谢。

【问题讨论】:

标签: c++ opencv mat


【解决方案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 行查看 here)。每个define 的研究文件types_c.h。

【讨论】:

【解决方案2】:

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多