[問題] 在wxWidgets使用 wxBitmap 二值化

看板C_and_CPP作者 (天氣放晴吧…)時間15年前 (2010/04/27 03:52), 編輯推噓4(4018)
留言22則, 6人參與, 最新討論串1/1
我是 C++ 初學者,如果貼的程式有沒注意到的錯誤,請一併指出,感謝! 遇到的問題: (題意請描述清楚) 我使用 wxWidgets 練習開發影像處理程式,執行二值化速度很慢。 請問在 wxWidgets 可以用什麼式處理 Bitmap 二值化,並且有較佳的速度。 希望得到的正確結果: 在 wxWidgets + code::block + MinGW 建立一個二值化程式 我沒有要使用 opencv !這不是作業,是我自已在學習C++。 程式跑出來的錯誤結果: 沒有錯誤,但是很慢 Visual C++ 是用 BITMAPINFOHEADER 和 BITMAPFILEHEADER 載入圖檔 看起來像是直接處理位元資料,然後顯示,不到一秒就處理結束。 我用wxMemoryDC 要執行 3~5 秒 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) wxWidgets + code::block + MinGW 使用 VC++ + wxWidgets 也可以 有問題的code: (請善用置底文標色功能) 這是用我用 wxMemoryDC 處理二值化的程式部份,但是速度很慢 http://codepad.org/YTHI90Zt 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.212.174

04/27 11:59, , 1F
你用的GetPixel與Draw的方式太慢了, 找找有沒有直接把整
04/27 11:59, 1F

04/27 11:59, , 2F
條ScanLine回來, 直接讀值並寫回去的方法, 而不要用這種
04/27 11:59, 2F

04/27 12:00, , 3F
一個Pixel讀回來又invoke draw畫回去的方式.
04/27 12:00, 3F

04/27 12:00, , 4F
怎麼做要查查看或待用過的強者大大解決, 我只會BCB6的XD
04/27 12:00, 4F

04/27 12:26, , 5F
我都是自己處理好再你用 wx的GUI秀圖, 你可以考慮看看.
04/27 12:26, 5F

04/27 12:31, , 6F
VictorTom, 謝謝你,但是scanline好像BCB才有 wxWidgets則無
04/27 12:31, 6F

04/27 12:32, , 7F
clanguage, 請問是如何處理?要先瞭解完整的bitmap格式嗎?
04/27 12:32, 7F

04/27 12:54, , 8F
你找找看有沒有取得整塊DC memory指標的函數
04/27 12:54, 8F

04/27 12:54, , 9F
通常都會有 win32API有 wxWidget我想應該也會有
04/27 12:54, 9F

04/27 12:54, , 10F
拿到memory pointer之後再來做處理會比較快
04/27 12:54, 10F

04/27 12:55, , 11F
看你是要用SSE還什麼其它的技術來處理
04/27 12:55, 11F

04/27 12:56, , 12F
都會比你用GetPixel快太多 處理完後寫回原址
04/27 12:56, 12F

04/27 12:56, , 13F
通常可能還會有另外一個函數是把memory寫回DC用的
04/27 12:56, 13F

04/27 12:56, , 14F
你用 wxImage 在使用 getData 直接寫完 再傳給 wxBitmap 使用
04/27 12:56, 14F

04/27 13:23, , 15F
StubbornLin, 謝謝你,好像有 GetRefData 和 SetRefData
04/27 13:23, 15F

04/27 13:24, , 16F
但是我不懂取得的 Data 如何使用!
04/27 13:24, 16F

04/27 13:24, , 17F
ADF, 謝謝你,wxImage 的 GetData 我一樣不懂如何使用,
04/27 13:24, 17F

04/27 13:26, , 18F
GetData部份我找不到範例, 我在 wxImage 找到 SetRGB
04/27 13:26, 18F

04/27 13:31, , 19F
如果只是BMP做二值化,那還是全部自己刻比較快
04/27 13:31, 19F

04/27 13:32, , 20F
就算不用SSE加速應該也是 realtime
04/27 13:32, 20F

04/27 13:32, , 21F
http://codepad.org/jdQ4YNOf 我用 SetRGB 速度有好一點了
04/27 13:32, 21F

04/27 13:36, , 22F
感謝以上各位提供意見協助!
04/27 13:36, 22F
文章代碼(AID): #1BrbzwYt (C_and_CPP)