[opencv][MFC]显示mat图片于mfc
2014-05-14 15:42
447 查看
对话框和单文档大同小异
之前一直使用老版本的Cvvimage类来实现,也是网上大多数人使用的方法
机缘巧合,自己试着写一个独立的显示函数,不依托于cvvimage类,
于是有了如下代码
基本思路是根据picture控件的尺寸大小改变mat的尺寸,然后显示即可,
相对于普通的bitmap位图显示没啥优点
现实于控件中的图片,如要加鼠标操作不会有啥不便应该,
横向纵向各自比例换算即可,
参考了http://ju.outofmemory.cn/entry/46316,但我只为显示mat,stretchdibits部分改了改,二次开发新函数要麻烦了。
之前一直使用老版本的Cvvimage类来实现,也是网上大多数人使用的方法
机缘巧合,自己试着写一个独立的显示函数,不依托于cvvimage类,
于是有了如下代码
void CxxxDlg::DrawcvMat(cv::Mat m_cvImg, UINT ID)//显示mat在picture控件中 { cv::Mat img; CRect rect; GetDlgItem(ID)->GetClientRect(&rect); cv::Rect dst(rect.left,rect.top,rect.right,rect.bottom); cv::resize(m_cvImg,img,cv::Size(rect.Width(),rect.Height())); unsigned int m_buffer[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256]; BITMAPINFO* m_bmi = (BITMAPINFO*) m_buffer; BITMAPINFOHEADER* m_bmih = &(m_bmi->bmiHeader); memset(m_bmih, 0, sizeof(*m_bmih)); m_bmih->biSize = sizeof(BITMAPINFOHEADER); m_bmih->biWidth = img.cols; m_bmih->biHeight = -img.rows; // 在自下而上的位图中 高度为负 m_bmih->biPlanes = 1; m_bmih->biCompression = BI_RGB; m_bmih->biBitCount = 8 * img.channels(); CDC *pDC = GetDlgItem(ID)->GetDC(); ::StretchDIBits( pDC->GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0, rect.Width(), rect.Height(), img.data, (BITMAPINFO*) m_bmi, DIB_RGB_COLORS, SRCCOPY ); ReleaseDC(pDC); }
基本思路是根据picture控件的尺寸大小改变mat的尺寸,然后显示即可,
相对于普通的bitmap位图显示没啥优点
现实于控件中的图片,如要加鼠标操作不会有啥不便应该,
横向纵向各自比例换算即可,
参考了http://ju.outofmemory.cn/entry/46316,但我只为显示mat,stretchdibits部分改了改,二次开发新函数要麻烦了。
相关文章推荐
- MFC显示Mat数据格式(Opencv)图片,保证4字节对齐,图片缩放不错行
- MFC显示Mat数据格式(Opencv)图片,保证4字节对齐,图片缩放不错行
- 知乎上有一个问题“在mfc框架中,有上面方法能直接将opencv2.0库中的Mat格式图片传递到Picture Control”中显示?
- 【OPENCV MFC】VS2012+MFC+Opencv2.4.9显示Mat类型图片
- 在 MFC 框架中,有什么方法能直接将 OpenCV 2.0 库中 Mat 格式的图片传递到 Picture Control(图片控件)显示?
- 在MFC图像控件上显示opencv Mat格式图片
- 在MFC对话框中显示图片的三种方法(有两种使用OpenCv)
- opencv2.2 MFC picture控件中显示图片
- 如何让OpenCV的图片显示在MFC窗口上
- 【OpenCV2】MFC中用OPENCV如何将图片显示在指定位置?
- 转换排列Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题
- Opencv在MFC客户端的Picture控件上显示图片
- OpenCV 用cv::Mat显示OpenNI获得的Kinect深度图片
- MFC:CImage显示OpenCV:Mat矩阵图像
- OPENCV如何把图片显示到MFC的picture控件上
- OpenCV+MFC快速应用:如何在MFC中显示Mat图像
- (转)Opencv (Opencv2)结合MFC学习数字图像处理【3】---显示图片
- mfc控件中显示opencv图片
- VS2010配置opencv2.4.8,用MFC创建显示一个图片的简单程序
- Opencv (Opencv2)结合MFC学习数字图像处理【3】---显示图片