[問題] 2D影像處理
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
問題(Question):
最近在做影像處理遇到一個問題,特別發生在我想要同時處理兩張不同大小的圖片(raw).
當我程式只處理XY size大小相同的圖檔沒問題,
但當output圖檔有兩種size時第二種常會出現一些無法預期的錯誤 ex:
圖A 1024X768 用for loop讀進
1026*770 的矩陣像 double(*Imagedata)[Y] = new double [X][Y]
接著output除了沒有給值的邊緣是黑色其他都正常填滿,
但當我想要做一些處理例如
for ( int i =0; i < 100; i++)
{for ( int j=0; j< 100; j++)
{
Imagedaata[j][i]=255;
}
}
就會出現一些奇怪的結果像是(理論上應該是左上角有白色100X100的正方形):
http://ppt.cc/oQJA
我在for loop之下用"cout" pixel by pixel檢查是正確的 但出來的結果就是不對...
試了各種方法還是沒有結論...
不知道板上有沒有高手可以解答我的疑問? 謝謝!
*[36m程式碼 *[m
FILE *file;
const int SizeX = 1024;
const int SizeY = 768;
const int EX=1026;
const int EY=770;
//讀圖檔
unsigned char (*Imagedata)[SizeY] = new unsigned char [SizeX][SizeY];
file=fopen("Image.raw","rb");
fread(Imagedata, sizeof(unsigned char), SizeX*SizeY, file);
fclose(file);
//寫進size較大的矩陣
double (*extendI)[EY] = new double [EX][EY];
for ( int i =0; i < SizeY; i++)
{for ( int j=0; j<SizeX; j++)
extendI[j+1][i+1]=static_cast<double>(Imagedata[j][i][0])
}
//影像處理
for ( int i =0; i < 100; i++)
{for ( int j=0; j< 100; j++)
extendI[j][i]=255;
}
//寫進輸出矩陣
unsigned char (*output)[EY]=new unsigned char [EX][EY];
for ( int i =0; i < EY; i++)
{for ( int j=0; j<EX; j++)
output[j][i]=extendI[j][i];
}
//輸出圖檔
file=fopen("output.raw","wb");
fwrite(output, sizeof(unsigned char), (EX)*(EY), file);
fclose(file);
return 0;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 142.136.124.34
※ 編輯: rai1209 來自: 142.136.124.34 (10/04 11:01)
※ 編輯: rai1209 來自: 142.136.124.34 (10/04 11:06)
→
10/04 11:28, , 1F
10/04 11:28, 1F
→
10/04 11:28, , 2F
10/04 11:28, 2F
→
10/04 11:30, , 3F
10/04 11:30, 3F
→
10/04 11:31, , 4F
10/04 11:31, 4F
→
10/04 11:43, , 5F
10/04 11:43, 5F
→
10/04 11:44, , 6F
10/04 11:44, 6F
→
10/04 12:23, , 7F
10/04 12:23, 7F
→
10/04 12:25, , 8F
10/04 12:25, 8F
→
10/04 12:25, , 9F
10/04 12:25, 9F