31

これは初歩的なことかもしれませんが、チャネル数を知ることは可能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);
}

グレースケールに変換すると、チャネルは 1 つだけになります。abs_dst_grayしかし、プログラム内のチャンネル数をどのように決定できますか? これを行う機能はありますか?または、プログラマーが作成する必要がある他の方法で可能ですか? ここで私を助けてください。

前もって感謝します。

4

2 に答える 2

58

電話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

于 2013-06-28T11:55:22.647 に答える