2012-11-27 46 views
0

我想將位圖轉換爲opencv圖像我使用pinvoke通過發送Bitmap.Scan0並在非託管端我通過使用字節數組創建iplimage該解決方案似乎工作但不總是 !只有當我使用我的grahpic設備在我的電腦上創建了圖像,但它在另一個上失敗時,圖像顏色似乎不正確,圖像發生了移位,我懷疑我應該將位圖傳送到DIB,這怎麼辦?位圖到Iplimage轉換產生錯誤的顏色

IplImage* image= cvCreateImage(cvSize(width,height),depth,3) 
memcpy(image->imageData,(uchar*)(bitmap),width*height*3); 
+0

我不知道如何使用的GetDIBits什麼HDC我應提供哪些資料? – user1853236

+0

什麼是位圖?它是如何產生的?位圖的原點位於左下角,而IplImage位於左上角。 – luhb

+0

你知道嗎? – MMH

回答

0

IplImage存儲在BGR爲了像素,而HBITMAP希望他們是RGB。

Luckely,對你來說,整個IplImage可以從BGR轉換一起RGB:

cvCvtColor(image, image, CV_BGR2RGB);