0
A
回答
2
快速瀏覽一下the documentation for the Mat
class沒有透露任何明顯的「轉換爲float**
」操作,但你也許可以自己動手完成它:
Mat mat = (Mat_<float>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
// allocate and initialize a 2d float array
float **m = new float*[mat.Rows];
for (int r = 0; r < mat.Rows; ++r)
{
m[r] = new float[mat.Cols];
for (int c = 0; c < mat.Cols; ++c)
{
m[r][c] = mat.at(r, c);
}
}
// (use m for something)
// don't forget to clean up!
for (int r = 0; r < mat.Rows; ++r)
{
delete[] m[r];
}
delete[] m;
如果您在使用float**
時沒有死機,您可以使用std::vector
或boost::multi_array
來避免內存分配/釋放的尷尬,並減少泄漏的可能性。
使用Mat::ptr<float>(n)
獲得float*
到n
矩陣的第n行也許會有一些運氣,但是如果您不復制數據,我不確定您會保留多長時間該指針將保持有效。
1
如果你的意思是這樣,
float a[M][N]; //M and N are compile-time constants!
float **p = a; //error
那麼你不能做到這一點。
但是,你可以這樣做:
float (*p)[N] = a; //ok
但是,如果不幫你,你想float**
不惜任何代價,然後用兩個for
循環,做手工,從a
複製的每個元素到p
:
相關問題
- 1. 將const float float轉換成Mat
- 2. 將T * array(Jet *或float *)轉換爲cv :: Mat <CV_32f>
- 3. 將uchar Mat轉換爲OpenCV中的Mat?
- 4. 將.mat轉換爲.wav
- 5. 將HBITMAP轉換爲cv :: Mat
- 6. 將BufferedImage轉換爲OpenCv Mat
- 7. 將cv :: Mat轉換爲SDL_Texture
- 8. Sybase將float從float轉換爲varchar
- 9. Java將Arraylist <Float>轉換爲float []
- 10. 將NSData轉換爲Java float?
- 11. mysql將float轉換爲double
- 12. 將int轉換爲float?
- 13. 將float []轉換爲android.graphics.Matrix
- 14. 將float轉換爲int
- 15. Haskell將Float轉換爲Int
- 16. 將FLOAT轉換爲INT
- 17. 將double轉換爲float?
- 18. 將Float轉換爲Int
- 19. JSON將float轉換爲int
- 20. 將int轉換爲float/double
- 21. 將float(YYYY)轉換爲datetime
- 22. 將double [] []轉換爲float [] []
- 23. 將float轉換爲char *
- 24. 將OpenCV的cv :: Mat轉換爲Eigen
- 25. 轉換爲float
- 26. 如何將IplImage轉換爲Mat?
- 27. 如何將opencv cv :: Mat轉換爲qimage
- 28. 將BufferedImage轉換爲OpenCV中的Mat
- 29. 將PXCImage轉換爲OpenCV Mat(PIXEL_FORMAT_YUY2)
- 30. 將mat轉換爲iplimage *在opencv中
謝謝!代碼示例非常好! – 2011-10-17 13:24:45