[問題] 一維陣列轉三維陣列 (影像檔)

看板C_and_CPP作者 (MC)時間14年前 (2011/09/25 21:59), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/3 (看更多)
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

09/25 22:35, , 1F
學opencv用at(int x,int y,intz)怎樣
09/25 22:35, 1F
ummmm 以後有機會可以學一下opencv 不過現在對opencv是甚麼 也不太清楚@.@

09/25 22:39, , 2F
用matlab (爆)
09/25 22:39, 2F
會matlab啦~ 想試試看用c++ 自己寫寫看~

09/25 22:47, , 3F
自己寫的話, 可能還要去處理一下padding的問題 (?)
09/25 22:47, 3F
padding的話 已經處理過了~ 上面的code是簡化過的 用來示意 ※ 編輯: MiguelC 來自: 140.113.69.230 (09/25 22:58)

09/26 16:22, , 4F
還是MATLAB比較好用
09/26 16:22, 4F
文章代碼(AID): #1EVpFChb (C_and_CPP)
文章代碼(AID): #1EVpFChb (C_and_CPP)