作者MiguelC (MC)
看板C_and_CPP
標題[問題] 一維陣列轉三維陣列 (影像檔)
時間Sun Sep 25 21:59:38 2011
bmp檔案的影像陣列是 BGR BGR BGR ....
是用一維陣列存取的
我想把他給用成 像matlab讀圖一樣 image[x][y][z] 那樣簡單
像是 image[1][1][1] 就是第一個畫素的紅色值
但是我不想再讀檔的時候 用for迴圈
fstream I;
char image[width][height][3];
for(int i=0; i<width, i++){
for(int j=0; j<height, j++){
I.read(image[i][j][2], 1); //讀B
I.read(image[i][j][3], 1); //讀G
I.read(image[i][j][1], 1); //讀R
}
}
我的想法是用 operator overloading 的概念
讀檔 就一樣讀成一整條 然後第一個值存到指標 p_image_array
char* p_image_array=new char[width*height*3];
I.read(p_image_array, width*height*3);
然後要存取的時候 直接用 下面的概念
char oprator[][][] (int x, int y, int z) {
return *(p_image_array + 3*x + y*width + z);
}
但是當然的 overloading 不支援自創的 operator
所以我的想法不知道怎麼實現
請問各位大大 我的想法要怎麼做出來??
感謝^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.69.230
推 johnlinvc:學opencv用at(int x,int y,intz)怎樣 09/25 22:35
ummmm 以後有機會可以學一下opencv 不過現在對opencv是甚麼 也不太清楚@.@
→ ericinttu:用matlab (爆) 09/25 22:39
會matlab啦~ 想試試看用c++ 自己寫寫看~
推 ericinttu:自己寫的話, 可能還要去處理一下padding的問題 (?) 09/25 22:47
padding的話 已經處理過了~ 上面的code是簡化過的 用來示意
※ 編輯: MiguelC 來自: 140.113.69.230 (09/25 22:58)
→ Deltaguita:還是MATLAB比較好用 09/26 16:22