MFC+opencv 显示mat图像

2023-05-16

VS2015+opencv3.0 MFC显示图片中方法三在使用时,

  • 只能显示彩色图像,灰度图像显示有问题,经查找,是没有设置图像调色板的原因
  • 图片控件宽度不为4的倍数 显示错误, 修改

代码

 
  1. /*****************************************************

  2. *

  3. * 函数名称: void DrawcvMat(cv::Mat m_cvImg, UINT ID)

  4. * 函数功能: 在picture control中显示图像,设置Freame或者rectangle都可以

  5. *

  6. * ****************************************************/

  7. void CMFC_showImageDemoDlg::DrawcvMat(cv::Mat m_cvImg, UINT ID)

  8. {

  9. cv::Mat img;

  10. CRect rect;

  11.  
  12. GetDlgItem(ID)->GetClientRect(&rect);

  13. if (rect.Width()%4 != 0)

  14. {

  15. rect.SetRect(rect.left, rect.top, rect.left + (rect.Width() + 3) / 4 * 4, rect.bottom); //调整图像宽度为4的倍数

  16. GetDlgItem(ID)->SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOMOVE);

  17. }

  18.  
  19. cv::Rect dst(rect.left, rect.top, rect.right, rect.bottom);

  20. cv::resize(m_cvImg, img, cv::Size(rect.Width(), rect.Height())); //使图像适应控件大小

  21.  
  22. unsigned int m_buffer[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256];

  23. BITMAPINFO* m_bmi = (BITMAPINFO*) m_buffer;

  24. BITMAPINFOHEADER* m_bmih = &(m_bmi->bmiHeader);

  25. memset(m_bmih, 0, sizeof(*m_bmih));

  26. m_bmih->biSize = sizeof(BITMAPINFOHEADER);

  27. m_bmih->biWidth = img.cols; //必须为4的倍数

  28. m_bmih->biHeight = -img.rows; //在自下而上的位图中 高度为负

  29. m_bmih->biPlanes = 1;

  30. m_bmih->biCompression = BI_RGB;

  31. m_bmih->biBitCount = 8 * img.channels();

  32.  
  33. if (img.channels() == 1) //当图像为灰度图像时需要设置调色板颜色

  34. {

  35. for (int i = 0; i < 256; i++)

  36. {

  37. m_bmi->bmiColors[i].rgbBlue = i;

  38. m_bmi->bmiColors[i].rgbGreen = i;

  39. m_bmi->bmiColors[i].rgbRed = i;

  40. m_bmi->bmiColors[i].rgbReserved = 0;

  41. }

  42. }

  43.  
  44. CDC *pDC = GetDlgItem(ID)->GetDC();

  45. ::StretchDIBits( pDC->GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0, rect.Width(), rect.Height(), img.data, (BITMAPINFO*) m_bmi, DIB_RGB_COLORS, SRCCOPY );

  46. ReleaseDC(pDC);

  47. }

来张效果图 (虽然lenna是经典,但我还是更喜欢胖迪^-^)

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC+opencv 显示mat图像 的相关文章

  • 在 MFC 中获取现有但非活动视图

    假设我想访问 MFC MDI 应用程序中文档类中的特定视图 如果它已打开 该视图当前可以是活动的 也可以是非活动的 如果我可以假设视图始终处于活动状态 我可以按照此说明进行操作 http support microsoft com kb 1
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

    我正在尝试使用 opencv API 来扭曲图像 以便将其显示到曲面屏幕上 我已经浏览了opencv中提供的翘曲apihere http docs opencv org 2 4 modules stitching doc warpers h
  • 如何在 OpenCV 中删除 mouseCallback

    在使用 C 的 OpenCV 中 有没有办法删除 mouseHandler int event int x int y int flags void param 通过函数添加到窗口 image window cv setMouseCallb
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 使用 Unity3D 解决 PnP

    我有一个真实 物理的棍子 上面连接有红外摄像头和一些红外 LED 它们形成了我正在使用的模式 以便使虚拟棍子以与物理棍子相同的方式移动 为此 我在 Python 中使用 OpenCV 并将由solvePnP 计算的旋转和平移向量发送到 Un
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • OpenCV 机器学习算法的 CSV 格式

    OpenCV 中的机器学习算法似乎使用以 CSV 格式读取的数据 参见示例这个 cpp文件 https code ros org trac opencv browser trunk opencv samples c tree engine
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • 如何将k4a_image_t转换为opencv矩阵? (Azure Kinect 传感器 SDK)

    我开始尝试使用 Azure Kinect Sensor SDK 我经历了官方操作指南 https learn microsoft com en us azure Kinect dk about sensor sdk sensor sdk 我
  • Android for OpenCV - 打开跟踪文件时出错,UnsatisfiedLinkError

    我对 Android 开发和 OpenCV 都是新手 我从 Android 下载了 OpenCV 库http sourceforge net projects opencvlibrary files opencv android http
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • Opencv 运动检测与跟踪

    我需要在网络摄像头的视频帧中进行强大的运动检测和跟踪 背景总是一样的 目的是识别物体的位置 如果可能的话没有阴影 但并不急于去除阴影 我已经尝试过用于背景减法和阈值化的opencv算法 但这仅取决于一个图像作为背景 如果背景的亮度 或相机自
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 类型错误:只有长度为 1 的数组可以转换为 Python 标量

    我是 openCV 的初学者 正在尝试分析数独求解器的现有代码 有这一段代码会引发错误 samples np float32 np loadtxt feature vector pixels data responses np float3
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans

随机推荐

  • C++ Map用法详解

    用法汇总 insert 插入一个元素 size 获得map中元素的个数 max size 获得map所能容纳的元素个数 count 判断是否存在某个key xff0c 存在为返回1 find 查找某个key erase 删除指定的元素 cl
  • C++中vector作为参数的三种传参方式

    此文章转载自 xff1a http www cnblogs com xiaoxi666 p 6843211 html c 43 43 中常用的vector容器作为参数时 xff0c 有三种传参方式 xff0c 分别如下 xff08 为说明问
  • OpenCV中Mat总结

    一 数字图像存储概述 数字图像存储时 xff0c 我们存储的是图像每个像素点的数值 xff0c 对应的是一个数字矩阵 二 Mat的存储 1 OpenCV1基于C接口定义的图像存储格式IplImage xff0c 直接暴露内存 xff0c 如
  • opencv----(1) mat最好用,和IplImage,cvmat 比较

    学习了几天 xff0c 发现mat比IplImage cvmat 好用太多了 不知道确切的原文出处 xff0c 我是转自新浪的一篇博文 xff1a http blog sina com cn s blog 534497fd01015k7z
  • OpenCV学习笔记之 ( 三 ) MFC显示Mat图片

    以下步骤参考以下链接 http blog csdn net dcrmg article details 51913160 原理及详解见上链接 下面只讲步骤 一 打开VS2010 xff0c 建立对话框的项目 二 建立 PictureCont
  • 彻底解决显示Opencv中Mat图像到Mfc窗口问题

    第一步 xff0c 转换格式前预先获得待显示控件的大小 xff0c 若相等则不做处理 xff0c 若不等则首先改变Mat图像大小 xff0c 再进行转换 CRect rect GetDlgItem IDC STATIC SRC gt Get
  • 在MFC中显示cv::Mat

    BOOL DrawMat CDC pDC cv Mat amp img CRect amp rect if img empty img depth 61 CV 8U img channels 61 3 return FALSE BITMAP
  • 在MFC图像控件上显示opencv Mat格式图片

    显示opencv图片格式Mat到图像控件vIDC上 vMat xff1a 图像Mat vIDC xff1a 图像控件ID void CDLFaceDlg showMat Mat vMat int vIDC if vMat empty ret
  • 在OpenCV中将cv::Mat绘制到MFC的视图中

    毕设时遇到了一个问题 xff0c 不能在MFC中显示由GrabCut抠出来的图 经一番折腾发现 xff1a 在OpenCV中如果图像最初是Mat类型的话 xff0c 就不能通过转换为IplImage xff0c 再转换为CvvImage来显
  • 【AutoLisp】AutoLisp中的DCL界面应用基础

    目录 01 DCL的作用 01 01 DCL介绍 01 02 DCL对话框成员 01 标准DCL对象家族 02 装饰DCL对象家族 03 集群DCL对象家族 04 整合DCL对象家族 02 DCL的加载 03 DCL的规则 04 DCL对话
  • 在MFC的picture控件中如何显示Mat图

    首先 xff0c 要进行输入检查 xff0c 看Mat数据是否是有效的 xff0c 如下图中所示 定义位图数据结构 xff0c 用以方便在图形设备接口 GraphicsDeviceInterface 上显示 xff0c 也就是windows
  • MFC+OPENCV+显示MAT类型图像

    MFC显示图像到界面 xff0c 可以用链接中的DrawMatToPic xff0c 有时会出现IplImage 类型转换问题 xff0c 因为用opencv做后续图像处理 xff0c 所以统一使用Mat类型 xff0c 可以showMat
  • CvMat、Mat、IplImage之间的转换详解及实例

    IplImage xff1a 在OpenCV中IplImage是表示一个图像的结构体 xff0c 也是从OpenCV1 0到目前最为重要的一个结构 xff1b 在之前的图像表示用IplImage xff0c 而且之前的OpenCV是用C语言
  • RGB和RGBQUAD的区别

    RGB和RGBQUAD的区别 昨天的晚上 为一个问题困扰了很长时间 几乎整个晚上都在弄一个小bug 感觉没有问题 但就是效果不理想 几次三番 查来查去 我想实现的功能是 生成一张图 图上有字 这张图是以一张指定的位图为背景的 我使用 COL
  • BITMAPINFO结构

    BITMAPINFO结构 BITMAPINFO结构具有如下形式 xff1a typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader RGBQUAD bmiColors 1 BITMAP
  • OpenCV中的cv::String和CString互相转换

    请注意是cv String xff0c 而不是std string xff0c 第一个字母是大写的 基本上CString转cv String网上都能查到 xff0c 而cv String转CString没有人提到 1 CString gt
  • MFC——文件打开和保存对话框(CFileDialog)

    最近要做一个文件打开和保存的对话框 xff0c 现将相关的代码记录如下 xff0c 用以备忘 xff01 所用控件 xff1a 2个静态标签 Static Text xff1a 用以显示功能标签 xff1b 2个文本框 Edit xff1a
  • OpenCv2 学习笔记(1) Mat创建、复制、释放

    OpenCV和VS2013的安装图文教程网上有很多 xff0c 建议安装好之后 xff0c 用VS2013建立一个空工程 xff0c 用属性管理器分别新建一个对应debug和release工程的props配置文件 xff0c 以后直接根据工
  • MFC C++ Cstring与string互转

    CString 转换成string 我试了很多的方法 xff0c 都不行 xff0c 我用的vs2010 解决方案 unicode CString sz1 61 L 34 abc 34 std string sz2 61 CT2A sz1
  • MFC+opencv 显示mat图像

    VS2015 43 opencv3 0 MFC显示图片中方法三在使用时 xff0c 只能显示彩色图像 xff0c 灰度图像显示有问题 xff0c 经查找 xff0c 是没有设置图像调色板的原因图片控件宽度不为4的倍数 显示错误 xff0c