[問題] 有關讀bmp檔

看板C_and_CPP作者 (兔)時間12年前 (2013/04/05 19:50), 編輯推噓3(3018)
留言21則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Vc++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 主要是要讀bmp檔 然後把data裡面存的pixel存到array裡面再一個一個bit去做調變跟解調 之後再跟原本的header合併輸出 看出來的圖檔如何 然後現在我去out出header的值得時候就完全不對~"~ 連header都沒讀好@@ 但我看了程式也不知道問題在哪裡@@ 餵入的資料(Input): lena.bmp 512*512 預期的正確結果(Expected Output): 例如BM(424D) output出來應為19778 兩個reserve區的輸出應為0 錯誤結果(Wrong Output): BM 輸出是52428... 兩個保留區也是輸出52428.... 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/qoUdoZ 補充說明(Supplement): 希望有哪位大大可以跟我說哪邊錯了QQQ 想再請問一下 假設我把data裡面的值存進char pixel[512][512] 這邊要再往後作調變應該要怎麼弄呢@@ 不好意思問題很多Q 主要還是想先知道讀檔問題的部分!! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.226.96.64 ※ 編輯: angela21415 來自: 36.226.96.64 (04/05 19:52)

04/05 21:24, , 1F
能不能提供 output 部分的程式碼?
04/05 21:24, 1F

04/05 21:58, , 2F
我是直接cout出來耶@@
04/05 21:58, 2F

04/05 21:59, , 3F
不太了解你out部分的程式碼指什麼@@
04/05 21:59, 3F

04/05 22:27, , 4F
那很可能是你的 lena.bmp 的內容是有問題的。
04/05 22:27, 4F

04/05 22:28, , 5F
或是你開檔案沒成功
04/05 22:28, 5F

04/05 22:51, , 6F
opencv最方便
04/05 22:51, 6F

04/06 00:04, , 7F
開檔失敗+1
04/06 00:04, 7F

04/06 00:11, , 8F
想請問一下開檔失敗可能的原因是???
04/06 00:11, 8F

04/06 00:27, , 9F
磁碟壞軌、檔案不存在、檔名或路徑錯誤
04/06 00:27, 9F

04/06 00:42, , 10F
何不檢查是否有開成功?is_open()
04/06 00:42, 10F

04/06 01:59, , 11F
都寫 C++ 別再 open/close 了吧... 在建構完 fstream
04/06 01:59, 11F

04/06 01:59, , 12F
之後 is_open() 是常識, 每次操作完 if(file) 是常識
04/06 01:59, 12F

04/06 02:00, , 13F
最好開檔只用於單一用途. output->ofstream、input->
04/06 02:00, 13F

04/06 02:01, , 14F
ifstream, 串流物件一旦被定義出來它就必須是"可使用"
04/06 02:01, 14F

04/06 02:01, , 15F
的, 不然這個物件就應該被銷毀, 所以寫作時會用 RAII
04/06 02:01, 15F

04/06 02:02, , 16F
風格多一個 scope 為了開檔
04/06 02:02, 16F

04/06 03:37, , 17F
先確定你的lena 是BMP24的格式 網路很多只是改附檔名= =
04/06 03:37, 17F

04/06 07:33, , 18F
是我檔案沒開好沒錯@@ 現在已經OK了!
04/06 07:33, 18F

04/06 08:09, , 19F
推OpenCV,這種東西自己搞會累死
04/06 08:09, 19F

04/06 16:53, , 20F
想請問一下讀JPG檔的話我這樣去開檔OK嗎?還是說建議
04/06 16:53, 20F

04/06 16:53, , 21F
去把OPEN CV學一學@@ 要把JPG的DATA給讀出來QQQ
04/06 16:53, 21F
文章代碼(AID): #1HNhfgW4 (C_and_CPP)