精易论坛

标题: OPENCV Mat 转 CBitmap [打印本页]

作者: z13228604287    时间: 2023-11-3 20:43
标题: OPENCV Mat 转 CBitmap
[C++] 纯文本查看 复制代码
//MAT 转位图
BOOL CMFCAppMedical305Dlg::Mat2Bmp(const cv::Mat& pImage, CBitmap* bitmap)
{
        if (!pImage.empty() && pImage.depth() == CV_8U)
        {
                uchar buffer[sizeof(BITMAPINFOHEADER) + 1024];
                BITMAPINFO* bmi = (BITMAPINFO*)buffer;
                int bmp_w = pImage.cols, bmp_h = pImage.rows;

                int width = bmp_w;
                int height = bmp_h;
                int bpp = pImage.channels() * 8;
                HBITMAP hBitmap;
                char* dst_data = 0;

                assert(bmi && width >= 0 && height >= 0 && (bpp == 8 || bpp == 24 || bpp == 32));
                BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);
                memset(bmih, 0, sizeof(*bmih));
                bmih->biSize = sizeof(BITMAPINFOHEADER);
                bmih->biWidth = width;
                bmih->biHeight = -height; // Negative height for top-down DIB
                bmih->biPlanes = 1;
                bmih->biBitCount = (unsigned short)bpp;
                bmih->biCompression = BI_RGB;

                if (bpp == 8)
                {
                        RGBQUAD* palette = bmi->bmiColors;
                        int i;
                        for (i = 0; i < 256; i++)
                        {
                                palette.rgbBlue = palette.rgbGreen = palette.rgbRed = (BYTE)i;
                                palette.rgbReserved = 0;
                        }
                }

                if (bitmap->m_hObject != NULL)
                {
                        bitmap->Detach();
                }

                hBitmap = CreateDIBitmap(CClientDC(NULL), bmih, CBM_INIT, pImage.data, bmi, DIB_RGB_COLORS);
                bitmap->Attach(hBitmap);

                return TRUE;
        }

        return FALSE;
}


作者: bianyuan456    时间: 2023-11-3 20:43
已经顶贴,感谢您对论坛的支持!
作者: heyi8831    时间: 2023-11-3 20:56
听说OPENCV众筹50w美金只求让它活下去?
作者: gdhong    时间: 2023-11-4 07:08
谢谢分享!
作者: 一指温柔    时间: 2023-11-4 08:46
谢谢分享!
作者: 396384183    时间: 2023-11-4 14:07

感谢分享
作者: zaozi    时间: 2023-11-4 14:33
学习一下
作者: pipicool    时间: 2023-11-4 15:02
学习一下
作者: 胖虎O    时间: 2023-11-4 15:51
学习一下
作者: yangdoudou    时间: 2023-11-5 10:30
谢谢分享
作者: 按键大师    时间: 2023-11-5 17:38
66666666666666666666




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4