OpenCvsharp: как я могу изменить MatExpr для Mat
Mat a = new Mat(3, 1, MatType.CV_8UC1);
Mat b = new Mat(1,3, MatType.CV_8UC1);
for( int i = 0; i < 3; i++ )
{
a.Set<byte>(i, 0, (byte)i);
b.Set<byte>(0, i, (byte)(i + 3));
}
var c = a * b;
mat = c.ToMat(); // error
результатом a.Mul(b) является класс MatExpr
Я хочу создать матрицу 3х3.
как я могу сделать это Mat Class?
1 ответ
Ответ: матричное умножение Opencv поддерживает только двойной тип.
Если вы хотите рассчитать в байтовом формате, посмотрите это.
Mat a = new Mat(3, 1, MatType.CV_64FC1, new double[] { 1.0, 2.0, 3.0 });
Mat b = new Mat(1, 3, MatType.CV_64FC1, new double[] { 4.0, 5.0, 6.0 });
Mat c = new Mat(3, 3, MatType.CV_64FC1);
var c = (a * b).ToMat();
c.ConvertTo(c, MatType.CV_8UC1);
Trace.WriteLine(c.At<byte>(0,0)); // 4