これは初歩的なものかもしれませんが、cv::Mat
がいくつのチャネルを持っているかを知ることは可能ですか?たとえば、RGB画像を読み込むと、3つのチャンネルがあることがわかります。 Opencv Documentationから直接、画像のラプラシアンを取得するために、次の操作を行います。
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
のチャンネル数をどのように判断できますか?これを行う機能はありますか?それとも、プログラマが書くべき他の方法で可能ですか?ここで私を助けてください。
前もって感謝します。
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
に対して。
あなたは使用するかもしれません:
Mat::channels()
http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-channels