【OpenCV用imshow显示图像到指定窗口内】

OpenCV显示图像用imshow函数,会弹出图像显示窗口
但有时我们希望图像能显示到我们界面的某个窗口内,可以这样做:
1 界面上放一个Picture控件,用来未来显示图像用,ID设为IDC_PIC(举例)
2 定义一个字符串符号(不是必须,只是这样方便,而且不容易出错)

#define WND_NAME	"myimg"

3 在程序初始化时:

namedWindow(WND_NAME);
HWND hWnd = (HWND)cvGetWindowHandle(WND_NAME);
::SetParent(hWnd, GetDlgItem(IDC_PIC)->m_hWnd);

解释:namedWindow创建一个指定名称的窗口,然后cvGetWindowHandle获取刚创建这个窗口的句柄,SetParent将这个新创建的窗口设置为想要显示窗口的子窗口,最终效果实际上就是把imshow窗口镶嵌进了指定的Picture控件里

4 要显示图像时,调用:

imshow(WND_NAME, img);
//img为Mat图像

注:cvGetWindowHandle函数需要添加头文件

#include "opencv2\highgui\highgui_c.h"

你可能感兴趣的:(编程,opencv,计算机视觉,c++)