簡體   English   中英

將CV_32FC1更改為CV_64FC1結果不正確的數據轉換

[英]change CV_32FC1 to CV_64FC1 result incorrect data conversion

我試圖用2D浮點數組初始化OpenCV中的Mat對象。 我將Mat的數據類型設置為CV_64FC1,然后打印出Mat。 打印結果與初始化2D陣列不同。

void testConversion()
{  float data[10][2] = 
 {
    {2.5,   2.4},
    {0.5,   0.7},
    {2.2,   2.9},
    {1.9,   2.2},
    {3.1,   3.0},
    {2.3,   2.7},
    {2,     1.6},
    {1,     1.1},
    {1.5,   1.6},
    {1.1,   0.9}
 };


  Mat
     mData(10,2,CV_64FC1,&data);
   cout<<"mData\n"<< mData <<endl;

  return;
 }

結果打印輸出為:

[6.400002481415868, 0.0002929687607320375;
 25.60000992119312, 3.600000857934356;
 32.00000766217708, 14.40000343546271;
 0.2250000536441803, 0.01406250333820935;
 0.225000053527765, 0.002734374717329047;
 2.541574442831658e-173, 1.956130224762901e-304;
2.779084519612415e-308, 7.165336730703368e-317;
 1.#QNAN, -9.255963134931783e+061;
 -9.255963134931783e+061, -9.255963134931783e+061;
 -9.255963134931783e+061, -9.255963134931783e+061] 

只有當我改變時才有效

Mat
 mData(10,2,CV_64FC1,&data);

Mat
 mData(10,2,CV_32FC1,&data);

有人可以解釋為什么嗎? 提前致謝。

問題的原因是數組類型(浮點型)與OpenCV的類型參數CV_64FC1之間不匹配。

參數CV_64FC1確定應將數據數組視為雙精度數組,每個值64位。

但是,您的數組具有浮點類型,每個值具有32位。 因此,在這種情況下,使用CV_32FC1是正確的用法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM