CCD如何鏡射處理 |
尚未結案
|
mailliw
一般會員 發表:6 回覆:6 積分:2 註冊:2003-11-05 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
mailliw 你好:
我不知道有沒有現成的指令(好像是沒有),所以我的鏡射都是自己寫的。24bpp 的 Bitmap 存在記憶體裡的樣子是
水平掃瞄線 TBitmap::ScanlLine Byte Order 在記憶體的位置 0 1 2 3 4 5 6 7 8 ... width*3-1 --------------------------------------|-|-|-|-|-|-|-|-|-----| 0 (scanline[height-1]) B G R B G R B G R ... R 1 (scanline[height-2]) . . . . . . . height-2 (scanline[1]) . height-1 (scanline[0]) B G R B G R B G R ... R垂直鏡射比較簡單 Byte *pSrc, *pDest; Graphics::TBitmap *pDestBitmap = new Graphics::TBitmap(); pDestBitmap->Width = pSrcBitmap->Width; pDestBitmap->Height = pSrcBitmap->Height; pDestBitmap->PixelFormat = pf24bit; for(int row = 0; row < pSrcBitmap->Height; row ) { pSrc = (Byte *)pSrcBitmap->ScanLine[pSrcBitmap->Height-1-row]; pDest = (Byte *)pDestBitmap->ScanLine[row]; CopyMemory(pDest,pSrc, pSrcBitmap->Width * 3); //WinAPI }水平鏡射比較麻煩 Byte SwapBuff[3]; Byte *pSrc, *pDest; Graphics::TBitmap *pDestBitmap = new Graphics::TBitmap(); pDestBitmap->Width = pSrcBitmap->Width; pDestBitmap->Height = pSrcBitmap->Height; pDestBitmap->PixelFormat = pf24bit; for(int row = 0; row < pSrcBitmap->Height; row ) { pSrc = (Byte *)pSrcBitmap->ScanLine[row]; pDest = (Byte *)pDestBitmap->ScanLine[row]; for(int col = 0; col < pSrcBitmap->Width; col ) CopyMemory(pDest col*3,pSrc (pSrcBitmap->Width-1-col)*3, 3); }如果有更好的方法也請分享一下吧 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |