我正在运行下面的简单代码,并期望o的深度变为32。 但它仍然是8.我错过了什么?
IplImage *o = cvCreateImage(cvSize(100,100), 8,1);
IplImage *n = cvCreateImage(cvSize(100,100), 32,1);
cvConvertScale(o,n,1.0,0.0);
printf("The depth of o is %d\n", o->depth);
printf("The depth of n is %d\n", n->depth);
答案 0 :(得分:1)
好吧,行为正确。 源映像中的数据类型不会转换为目标的数据类型。
只是将源与缩放常数相乘并转换为目标类型,并将结果存储在目标中。
因此,源或目标的类型没有变化。 只有目标中的数据才会更改为1.0
以外的缩放常量答案 1 :(得分:1)
更有意义的是:
IplImage *in8u = cvLoadImage( filename, 1); // always uint8, and in this case 3 channel IplImage *in32f = cvCreateImage(cvSize(100,100), IPL_DEPTH_32F ,3); // whatever you choose cvConvertScale(in8u,in32f,1.0,0.0); printf("The depth of in8u is %d\n", in8u->depth); printf("The depth of in32f is %d\n", in32f->depth);
现在您将8位输入文件的数据作为32位浮点数据