2012-11-27 30 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);