我正在讀取陣列中的一個64x128灰度圖像,一次一行。每個像素都是8位寬。讀操作以字節可尋址方式完成。現在我想轉換每一行並將其存儲在二維數組中。此體系結構旨在針對特定設備上的內存優化。一旦2D數組被填充,我需要逐字節地讀取它,使得每個8位位於數組的不同行中。任何人都可以提供示例代碼?將一維字節陣列轉置爲二維陣列
謝謝!
我正在讀取陣列中的一個64x128灰度圖像,一次一行。每個像素都是8位寬。讀操作以字節可尋址方式完成。現在我想轉換每一行並將其存儲在二維數組中。此體系結構旨在針對特定設備上的內存優化。一旦2D數組被填充,我需要逐字節地讀取它,使得每個8位位於數組的不同行中。任何人都可以提供示例代碼?將一維字節陣列轉置爲二維陣列
謝謝!
樣品
#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;
}
只是從你的陣列construct a Mat:
uchar array[w*h];
// read bytes:
Mat m(h, w, CV_8U, array);
或在第一名的墊子開始,讀入它的數據成員:
Mat m(h, w, CV_8U);
// read into m.data
,如果你有一個一維墊,就可以只是重塑它:
Mat m(1, w*h, CV_8U);
// make it 2d HxW now:
m = m.reshape(1, w);
到目前爲止你有什麼嘗試過?我們不只是在這裏爲你工作。我們幫助您解決您在自己的工作中遇到的問題。 – poljpocket