如何使用opencv全屏

参考资料:http://www.cnblogs.com/lidabo/archive/2012/07/17/2595452.html   (windows 窗口介绍)

http://blog.youkuaiyun.com/ryfdizuo/article/details/6997135  opencv的bug介绍。

opencv如果可以全屏的话,可以省去不少事情呢,opencv的highgui中给出的api中,已经可以实现全屏了,我使用的版本是2.4.6,以下的版本就不知道了。

HWND hWnd = (HWND)cvGetWindowHandle("hello");这样就可以使用windows的sdk对这个句柄进行操作了,你可能会发现使用上面的方法不可行,值得注意的是cvNamedWindow这个函数的第二个参数一定要设置为0,如果设置为1的话,则不可以全屏了。

#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<Windows.h>

void main()
{
	IplImage *img1 = cvLoadImage("hello2.jpg");
	cvNamedWindow("hello",0);//0是必须的。
	
	cvSetWindowProperty("hello",CV_WND_PROP_FULLSCREEN,1);
	//以前的方法。
HWND hWnd = (HWND)cvGetWindowHandle("hello");
	
	HWND hRawWnd = ::GetParent(hWnd);
	int screenX = GetSystemMetrics(SM_CXSCREEN);//获取整个屏幕右下角X坐标   
	int screenY = GetSystemMetrics(SM_CYSCREEN);//屏幕Y坐标 
	if (hRawWnd != NULL) {
		BOOL bRet = ::SetWindowPos(hRawWnd, HWND_TOPMOST, 0, 0, screenX, screenY, SWP_NOSIZE |SWP_NOMOVE);
		assert(bRet);
	}
	//cvWaitKey();
	cvShowImage("hello",img1);
	cvWaitKey();
}

如何使mfc全屏(与cv无关)

在mfc的mainFrame类中添加下面的代码,并想办法出发这个函数即可。

void CMainFrame::OnEditUndo()
{
	// TODO: 在此添加命令处理程序代码
		LONG style = ::GetWindowLong(this->m_hWnd,GWL_STYLE);
		style &= ~(WS_DLGFRAME | WS_THICKFRAME);
        SetWindowLong(this->m_hWnd,GWL_STYLE, style);
        this->ShowWindow(SW_SHOWMAXIMIZED);
        CRect rect;
        this->GetWindowRect(&rect);
        ::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,rect.left-1, rect.top-1, rect.right-rect.left + 3, rect.bottom-rect.top + 3, SWP_FRAMECHANGED);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值