【发布时间】:2015-03-02 10:53:58
【问题描述】:
我有一个整数数组(实际上是一个维度为 numangle*numrho 的图像,在一个名为 accum 的变量中),我想将其转换为 opencv Mat 结构进行显示,但遇到了一些麻烦。我创建了一个 OutputArray 并用整数数组中的值填充它的数据;因为 OutputArray 数据显然是 uchars(即使我声明 CV_32SC1 用于 32 位有符号整数 1 通道图像),我按如下方式逐字节填充它:
int s = sizeof(accum[0]);
_acc.create(numangle+2,numrho+2,CV_32SC1);
Mat accumulator = _acc.getMat();
for(int r = 0; r < numrho; r++ )
for(int n = 0; n < numangle; n++ )
{
int base = r * (numangle)+n;
accumulator.data[base*s+3] = accum[base] & 0xFF;
accumulator.data[base*s+2] = (accum[base]>>8) & 0xFF;
accumulator.data[base*s+1] = (accum[base]>>16) & 0xFF;
accumulator.data[base*s+0] = (accum[base]>>24) & 0xFF;
// accumulator.at(int)(r,n)=accum[base];
}
但是,尽管尺寸正确,但我似乎最终得到了 1 位图像。我的指针算术有点生疏,也许我不需要 base*s 。 iiuc 如果我使用 accumulator.at(x,y) 会显着变慢吗?
【问题讨论】: