我正在使用图像,我在matlab中使用imfinfo的详细信息如下:
Filename: 'dog.jpg'
FileModDate: '25-Mar-2011 15:54:00'
FileSize: 8491
Format: 'jpg'
FormatVersion: ''
Width: 194
Height: 206
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
NewSubFileType: 0
BitsPerSample: [8 8 8]
PhotometricInterpretation: 'RGB'
ImageDescription: [1x13 char]
StripOffsets: 154
SamplesPerPixel: 3
RowsPerStrip: 206
StripByteCounts: 119892
它显示了通道数= 3(NumberOfSamples:3)但是当我使用以下代码在opencv中找到通道数时,我得到No. of channels = 1
Mat img = imread("dog.jpg", 0);
printf("No. of Channels = %d\n", img.channels());
为什么这样?请解释一下。
答案 0 :(得分:1)
正如@berak评论的那样,通过使用0
作为imread()
的第二个参数,您将其加载为灰度图像。尝试通过传递负值<0
来加载它,以便按原样(使用Alpha通道)返回加载的图像,或者返回正值>0
以返回3通道彩色图像。
像:
Mat img = imread("dog.jpg", -1); // <0 Return the loaded image as is
^^