Opencv 电子秤是否未按预期工作?

Opencv 电子秤是否未按预期工作?,opencv,Opencv,我正在运行下面的简单代码,希望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

我正在运行下面的简单代码,希望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); 

好的,行为是正确的。 源映像中的数据类型不会转换为目标映像的数据类型

只需将源与缩放常量相乘并转换为目标类型,然后将结果存储到目标中即可

因此,源或目标的类型都没有变化。
仅目标中的数据改变为除1.0以外的缩放常数,更有意义的是:

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); IplImage*in8u=cvLoadImage(文件名,1);//始终为uint8,在本例中为3通道 IplImage*in32f=cvCreateImage(cvSize(100100),IPL_DEPTH_32F,3);//无论你选择什么 无级变速器刻度(in8u,in32f,1.0,0.0); printf(“in8u的深度为%d\n”,in8u->depth); printf(“in32f的深度为%d\n”,in32f->depth); 现在您将8位输入文件的数据作为32位浮点数据