c++ - opencv mat与CImage之间的转换

标签 c++ opencv mfc mat

我正在寻找一种有效的方法来将存储在 opencv Mat 变量中的图像转换为 CImage 对象(CBitmap 也不错)。我所说的高效是指既快速又“简短”。 我的扩展搜索结果是找到手动将位图 header 和数据写入对象的代码,我想避免这种情况,因为我不太明白那里发生了什么。更糟糕的是,它看起来有点过时并产生运行时错误...... (我相信我在这里获得了它:http://howto-code-it.blogspot.com/2011/05/how-to-convert-iplimage-to-hbitmap.html)

至于现在我只是一个一个地复制像素,这不太明智(虽然我需要让它工作),现在是提高性能的时候了;)

如果有人能以其他方式提出转换,我们也将不胜感激。

最佳答案

要复制数据,您不需要逐个像素地进行。一种方法是(及其 header ):

CImage* m_pImg;
cv::Size m_sizeShow;
cv::Mat m_matCVImg;
BITMAPINFO bitInfo;
...
StretchDIBits(m_pImg->GetDC(), 0, 0,
    m_sizeShow.width, m_sizeShow.height, 0, 0,
    m_sizeShow.width, m_sizeShow.height,
    matImgTmp.data, &bitInfo, DIB_RGB_COLORS, SRCCOPY);

查看 http://kvy.com.ua/transformation-of-opencv-image-to-mfc-image-in-msvc-project/获取分步说明。

关于c++ - opencv mat与CImage之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510743/

相关文章:

c++ - 使用 OpenCV 将图像区域移动到中心

c++ - 在以下情况下从套接字读取数据已损坏?

c++ - 在 CString 中查找以空格分隔的单词的最佳方法

c++ - 如何在 C++ 中从 9222*9222 二维数组创建一个大的特征矩阵

c++ - 推导指南、initializer_list 和类型推导过程

Android NDK 应用程序 - 集成文本文件进行部署的最佳方式

opencv - 如何分离两个图像不常见的颜色像素?

c++ - 到 ATL 的静态链接总是失败

c++ - openCV 动物(小鼠)识别

java - Boost Asio io_service,从客户端读取消息