我正在读取阵列中的64x128灰度图像,一次一行。每个像素都是8位宽。读操作以字节可寻址方式完成。现在我想转置每一行并将其存储在2D数组中。该架构旨在针对特定设备进行内存优化。一旦填充了2D数组,我需要逐字节地读取它,使得8位中的每一位都位于数组的不同行中。任何人都可以提供示例代码吗?
谢谢!
答案 0 :(得分:0)
您的数组中只有construct a Mat:
uchar array[w*h];
// read bytes:
Mat m( h, w, CV_8U, array );
或以第一名的Mat开头,并读入其数据成员:
Mat m(h, w, CV_8U);
// read into m.data
如果你有1d Mat,你可以重新塑造它:
Mat m( 1, w*h, CV_8U );
// make it 2d HxW now:
m = m.reshape(1, w);
答案 1 :(得分:0)
样品
#include <stdio.h>
#include <string.h>
int main(void){
unsigned char a[64*128];
int i,r,c;
for(i=0;i<64*128;i++){
a[i]=i;
}
//not fill
unsigned char (*b)[64][128] = (unsigned char (*)[64][128])a;
for(r=0;r<64;++r){
for(c=0;c<128;++c){
printf("%i,", (*b)[r][c]);
}
printf("\n");
}
//FILL
unsigned char b2[64][128];
memcpy(b2, a, sizeof(b2));
printf("\nFill ver\n");
for(r=0;r<2;++r){
for(c=0;c<16;++c){
printf("%i,", b2[r][c]);
}
printf("\n");
}
return 0;
}