【发布时间】:2020-04-24 19:59:31
【问题描述】:
使用 netcoreapp3.1 和 EmguCV 3.4.1,我一方面创建了 WriteableBitmap,另一方面创建了 EmguCV Mat。两者的尺寸相同,均为 2793 x 2585
var wb = new WriteableBitmap(2793, 2585, 96, 96, PixelFormats.Bgr24, null);
int wbStride = wb.BackBufferStride; //8380
var m = new Mat(2585, 2793, DepthType.Cv8U, 3);
int matStride = m.Step; //8379
对于 WriteableBitmap BackBufferStride = 8380,但对于 Mat,我得到 Step = 8379。我发现通常用于计算步幅的两个不同公式:
a) 步幅 = ((width * bitsPerPixel + 31) & ~31) >> 3;
b) 步幅 = (width * bitsPerPixel + 7) / 8
公式 a) 得到了 WriteableBitmap BackBufferStride 的值,公式 b) 得到 EmguCV Mat 的值。
为什么相同宽度和高度的步幅不同?哪个公式是正确的?
【问题讨论】: