我有一個24bpp GdiPlus::Bitmap
,我需要轉換成IplImage
(opencv)。 有誰知道如何做到這一點?GdiPlus ::位圖轉換爲OpenCV IplImage
2
A
回答
1
這裏是你如何做到這一點。
1)創建一個新的目標與源圖像的尺寸的IplImage對象(GdiPlus ::位圖)
2.)使用lockbits
3.獲取源圖像的PixelData取出把手)複製源PixelData取出的目標圖象 - 源圖像的
4)UnlockBits
0
這裏是唯一的區別您的問題的答案,該位圖轉換成墊:Convert Bitmap to Mat
0
難度在於Gdiplus :: Bitmap理論上支持很多奇特的像素格式,所以完全一般而言,轉換將是冗長的。但基本情況如下:
IplImage* GdiPlusBitmapToOpenCvImage(Gdiplus::Bitmap* bmp)
{
auto format = bmp->GetPixelFormat();
if (format != PixelFormat24bppRGB)
return nullptr;
Gdiplus::Rect rcLock(0, 0, bmp->GetWidth(), bmp->GetHeight());
Gdiplus::BitmapData bmpData;
bmp->LockBits(&rcLock, Gdiplus::ImageLockModeRead, format, &bmpData);
int buffSz = bmpData.Stride * bmpData.Height;
int depth = 8, channel = 3;
IplImage* cvImage = cvCreateImage(CvSize(rcLock.Width, rcLock.Height), depth, channel);
const unsigned char* src = static_cast<unsigned char*>(bmpData.Scan0);
std::copy(src, src + buffSz, cvImage->imageData);
bmp->UnlockBits(&bmpData);
return cvImage;
}
相關問題
- 1. 如何將8位OpenCV IplImage *轉換爲32位IplImage *?
- 2. 從位圖轉換爲MIplImage或IplImage c#
- 3. OpenNI RGB圖像到OpenCV BGR IplImage轉換?
- 4. opencv的:轉換墊的IplImage爲cvLabel
- 5. 將mat轉換爲iplimage *在opencv中
- 6. OpenCV:在Python中從NumPy轉換爲IplImage
- 7. opencv:將Mat轉換爲IplImage問題
- 8. 如何將opencv mat圖像轉換爲gdi位圖
- 9. cvMat轉換爲IplImage
- 10. OpenCV:縮放和轉換IplImage數據
- 11. 從Mat元素到IplImage的opencv轉換*
- 12. 轉換墊的IplImage * OpenCV中和C/C++
- 13. 將GDIPlus :: Bitmap轉換爲cv :: Mat(OpenCV C++接口)
- 14. 通過opencv將Mat轉換爲位圖
- 15. OpenCV:如何旋轉IplImage?
- 16. OpenCV替換IplImage的墊子
- 17. OpenCV的圖像轉換
- 18. 將IplImage轉換爲osg :: Image
- 19. 將IplImage轉換爲Qpixmap
- 20. 錯誤頭文件將IplImage轉換爲位圖
- 21. Gdiplus位圖錯誤
- 22. GDIplus比例位圖
- 23. 如何使用OpenCv將字節數組轉換爲IplImage?
- 24. 如何將IplImage opencv轉換爲字節數組(bmp格式)C++?
- 25. 如何將IplImage(OpenCV)快速轉換爲ALLEGRO_BITMAP(A5)?
- 26. c OpenCV;如何將2維數組轉換爲IplImage?
- 27. 將depth_image從Kinect轉換爲OpenCV經典格式(IplImage)以顯示
- 28. iplimage to mat 32位轉換錯誤
- 29. 從tagRECT/CRect轉換爲Gdiplus :: Rect
- 30. 轉換NSImage到IplImage