2010-07-09 53 views
1

我在寫一個web服務器,它接收圖像並做一些處理並回復結果。如何將通過http post發送的png圖像加載到OpenCV IplImage格式

該圖像是PNG格式。它使用PHP通過POST作爲byte []接收。我必須將此字節[]轉換爲OpenCV IplImage格式。爲了完成這個任務,我應該遵循哪些步驟?

我目前正在做的方式是讀取圖像並將其保存在硬盤上,並解析OpenCV cvLoadImage()函數的文件路徑。我相信按照上述段落描述的方式比這更有效。

或者有沒有辦法將byte []直接解析爲某些OpenCV函數,而不嘗試將它自己轉換爲IplImage格式?

謝謝..

+1

檢查出http://stackoverflow.com/questions/801199/opencv-to-use-in-memory-buffers-or-file-pointers – 2010-07-09 12:55:56

+0

謝謝,但它沒有揭示任何解釋在PHP中的圖像到一個OpenCV函數 – Niroshan 2010-07-09 16:05:21

+0

我不認爲Dani提出的問題的答案會幫助OP。請注意,那裏接受的答案使用了無證函數,應該避免。 – 2010-07-09 19:22:18

回答

1

我相信這是不可能的。

您從POST請求獲得的字節是存儲在文件中的實際字節。由於PNG是一種壓縮格式,因此需要首先對這些字節進行解壓縮。 (IplImage存儲圖像的未壓縮字節)

您可以自己編寫PNG解壓縮例程或使用某些庫(檢查libpng)。

一旦你有解壓縮的字節,你需要設置IplImage結構。

使用cvCreateImageHeader創建適當大小和深度的圖像,並將image->數據指針設置爲解壓縮數據。

確保解壓縮的數據是BGR格式......交織(一個藍色字節,一個綠色字節,一個紅色字節等)。