[問題] 回傳bitmap圖案無法正常顯示

看板C_and_CPP (C/C++)作者 (小涵)時間15年前 (2010/10/19 18:50), 編輯推噓4(408)
留言12則, 5人參與, 最新討論串1/2 (看更多)
大家好: 今天在撰寫Iplimage轉成bitmap之後回傳到picturebox上面出了問題 顯示出來的圖案如網址http://addsnaps.com/view/img/5889 由左至右分別為"原圖""轉灰階後回傳顯示的圖""轉灰階後儲存的圖" 不知道為什麼儲存起來沒有問題,但是顯示出來顏色卻亂了 以下是程式碼..請大家多指教 grayIplimage = cvCreateImage(grayIplimageSize, IPL_DEPTH_8U, 1); //將原圖轉換成為灰階並儲存在grayIplimage裡面 cvCvtColor(originalIplimage, grayIplimage, CV_RGB2GRAY); cvSaveImage("aa.jpg",grayIplimage); //將灰階的bitmap轉換成bitmap並回傳到picturebox上面 return gcnew Bitmap(grayIplimage->width, grayIplimage->height, grayIplimage->widthStep, PixelFormat::Format8bppIndexed, (System::IntPtr)grayIplimage->imageData); 因為儲存起來的圖片是灰階的沒有錯,所以我猜想是說.. 也許是出錯在回傳bitmap這邊...感謝大家的指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.46.91

10/19 19:49, , 1F
我記得Bitmap沒有實作8bit...
10/19 19:49, 1F

10/20 00:39, , 2F
我遇過 Bitmap似乎是會自動轉格式成24bpp
10/20 00:39, 2F

10/20 00:40, , 3F
解決方式是自己用lockbit()一個一個pixel慢慢copy
10/20 00:40, 3F

10/20 00:42, , 4F
簡單的說就是Bitmap->Save()會偷轉格式
10/20 00:42, 4F

10/20 11:07, , 5F
感謝樓上兩位版友:)
10/20 11:07, 5F

10/22 15:46, , 6F
其實我覺得是Bitmap有8bit的格式...但是傳到picturebox時
10/22 15:46, 6F

10/22 15:46, , 7F
picturebox會自己已24bit來判斷 同樣的問題bcb image也會
10/22 15:46, 7F

10/22 15:48, , 8F
所以我後來就都不管它是8還是24都使用24來做..速度差不多
10/22 15:48, 8F

10/22 23:01, , 9F
不確定您是說BCB的TImage還是TBitmap, 理論上TBitmap才
10/22 23:01, 9F

10/22 23:02, , 10F
是真正的BMP storage, 那, 當它是pixelformat8bits時,
10/22 23:02, 10F

10/22 23:03, , 11F
的確要自己處裡調色盤的資訊, 才能存出正確/符合預期的
10/22 23:03, 11F

10/22 23:04, , 12F
8bpp圖; 相關API: SetDIBColorTable SetPaletteEntries
10/22 23:04, 12F
文章代碼(AID): #1ClNVSs- (C_and_CPP)
文章代碼(AID): #1ClNVSs- (C_and_CPP)