PICTURE控件显示图片或视频的方法
来源:互联网 发布:时时彩后二计划软件 编辑:程序博客网 时间:2024/05/13 00:38
来自链接:http://www.zhihu.com/question/29611790/answer/45068617
是实测两种都可以,本人更喜欢第二种。
void Ckinect2Dlg::drawcvmat(Mat m_cvImg, UINT ID)
{
Mat img;
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
Rect dst(rect.left,rect.top,rect.right,rect.bottom);
resize(m_cvImg,img,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, img.cols, img.rows,
img.data,
(BITMAPINFO*) m_bmi,
DIB_RGB_COLORS,
SRCCOPY
);
ReleaseDC(pDC);
}
void Ckinect2Dlg::drawcvmat(Mat m_cvImg, UINT ID)
{
Mat img;
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
Rect dst(rect.left,rect.top,rect.right,rect.bottom);
resize(m_cvImg,img,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, img.cols, img.rows,
img.data,
(BITMAPINFO*) m_bmi,
DIB_RGB_COLORS,
SRCCOPY
);
ReleaseDC(pDC);
}
另外一个方法,也可以把OpenCV的窗口添加到PictureControl里面,这样你可以继续使用OpenCV的setMouseCallback直接对PictureControl进行鼠标操作。
首先在你的OnInit函数中添加如下
上面就是打开一个名为view的OpenCV窗口,并将其放置到一个ID为IDC_STATIC_CV的PictureControl里面,这个控件的类型需要是rectangle。当你在需要显示某图片的时候,就像在OpenCV里面显示一样就可以了。
首先在你的OnInit函数中添加如下
namedWindow("view", WINDOW_AUTOSIZE);HWND hWnd = (HWND) cvGetWindowHandle("view");HWND hParent = ::GetParent(hWnd);::SetParent(hWnd, GetDlgItem(IDC_STATIC_CV)->m_hWnd);::ShowWindow(hParent, SW_HIDE);
imshow("view", mat);
0 0
- PICTURE控件显示图片或视频的方法
- 使用picture控件动态显示图片方法
- 关于在MFC的picture控件里显示图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- 用picture控件显示图片之动态方法(使图片适应于控件大小)
- MFC Picture Control 控件不随图片伸缩的方法
- MFC picture控件中显示图片
- MFC picture控件显示图片(新手)
- opencv mfc 显示图片到picture控件
- mfc picture控件显示png图片
- picture control显示静态图片的简单方法
- 在Picture Control控件上显示JPG图片并让图片适应控件的大小
- MFC中picture显示bmp图片方法
- [ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708]
- MFC 基于对话框的图片控件(picture)动态加载.bmp图片并显示
- OPENCV如何把视频显示到MFC的picture控件上
- OpenCV学习笔记 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面 .
- OpenCV学习 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- CPU使用率
- 【Android适配问题集锦-文件类】获取Android机型设备信息的适配差异问题
- pipework的使用以及源码分析
- javaScript 隐藏与显示的代码
- 哈理工OJ 1161 Leyni(线段树)
- PICTURE控件显示图片或视频的方法
- mysql数据记录插入
- Thinkcmf QQ邮箱配置
- Eclipse中 C/C++ 开发
- CocoaPods安装和使用教程
- css重绘与重排
- iOS UI界面之间传值方式的整理总结(1)协议方法
- 求子数组的最大和
- QuartzCore框架学习-CAGradientLayer