我刚刚发现Scala Breeze是Scala应用程序的高性能线性代数库。
我想知道是否有办法用Int Array作为元素单元初始化DenseMatrix。
这是我试图移植到Breeze的OpenCV功能:
val rgb_raw = Array[Byte] (....) //ByteArray RGB values dim 480x360
val rgb_mat = new Mat (360, 480, CvType.CV_8UC3)
rgb_mat.put(0,0,rgb_raw)
我希望它像以下一样简单:
val rgb_mat = new DenseMatrix(360,480, rgb_raw)
或
val rgb_mat = new DenseMatrix[Array[Int,Int,Int]](360,480,rgb_raw)
我没有在文档中找到任何指向正确方向的内容。
答案 0 :(得分:0)
这对我有用
import breeze.linalg.DenseMatrix
val range = 0 to 360*480
val arr = range map(_=>0.toByte)).toArray
new DenseMatrix(360,480, arr)
res27: breeze.linalg.DenseMatrix[Byte] =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... (480 total)
new DenseMatrix(360,480, range.toArray)
res28: breeze.linalg.DenseMatrix[Int] =
0 360 720 1080 1440 1800 2160 2520 2880 3240 3600 ... (480 total)
val arrr = range.map(_=>arr).toArray
new DenseMatrix(360,480, arrr)
res31: breeze.linalg.DenseMatrix[Array[Byte]] =
[B@30276fff [B@30276fff [B@30276fff [B@30276fff ... (480 total)