vc6.0利用opencv1.0实现在picture控件里面显示摄像头视频的问题 20
部分程序如下:pwnd=GetDlgitem(picture空间的ID);cvcamSetProperty(0,CVCAM_PROP_WINDOW,&pwnd);这样的话...
部分程序如下:
pwnd=GetDlgitem(picture空间的ID);
cvcamSetProperty(0,CVCAM_PROP_WINDOW,&pwnd);
这样的话,调试成功,但是电脑自动弹出一个ActiveMovie Window窗口来播放视频,没有在picture控件里面播放,求大神解决 展开
pwnd=GetDlgitem(picture空间的ID);
cvcamSetProperty(0,CVCAM_PROP_WINDOW,&pwnd);
这样的话,调试成功,但是电脑自动弹出一个ActiveMovie Window窗口来播放视频,没有在picture控件里面播放,求大神解决 展开
1个回答
展开全部
#include "CvvImage.h"
#include <highgui.h>
#include <cv.h>
IplImage * g_Frame;//用于存储一帧
CvvImage g_CvvImage;
CvCapture * g_Video;
CRect g_Rect;
bool g_bRun = true;
DWORD WINAPI ThreadFun(LPVOID lParam)
{
xxxDlg* dlg = (xxxDlg*)lParam;
CDC* pDC;
HDC hdc;
CWnd *pwnd;
while( g_bRun )
{
g_Frame = cvQueryFrame( g_Video );
pwnd= dlg->GetDlgItem(IDC_STATIC);//PIC控件
pDC=pwnd->GetDC();
hdc=pDC->GetSafeHdc();
pwnd->GetClientRect(&g_Rect);
g_CvvImage.CopyOf( g_Frame, 1 );//g_CvvImage是CvvImage类型
g_CvvImage.DrawToHDC( hdc, &g_Rect );
dlg->ReleaseDC( pDC );
}
return 0;
}
BOOL xxxDlg::OnInitDialog()
{
..
//打开摄像头
g_Video = cvCreateCameraCapture( -1 );
if ( !g_Video )
{
AfxMessageBox( "无法打开摄像头" );
return FALSE;
}
//创建一个线程
CreateThread( NULL, 0, ThreadFun, this, 0, NULL );
}
//最后记得释放
void xxxDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: 在此处添加消息处理程序代码
g_bRun = false;
cvReleaseCapture( &g_Video );
}
#include <highgui.h>
#include <cv.h>
IplImage * g_Frame;//用于存储一帧
CvvImage g_CvvImage;
CvCapture * g_Video;
CRect g_Rect;
bool g_bRun = true;
DWORD WINAPI ThreadFun(LPVOID lParam)
{
xxxDlg* dlg = (xxxDlg*)lParam;
CDC* pDC;
HDC hdc;
CWnd *pwnd;
while( g_bRun )
{
g_Frame = cvQueryFrame( g_Video );
pwnd= dlg->GetDlgItem(IDC_STATIC);//PIC控件
pDC=pwnd->GetDC();
hdc=pDC->GetSafeHdc();
pwnd->GetClientRect(&g_Rect);
g_CvvImage.CopyOf( g_Frame, 1 );//g_CvvImage是CvvImage类型
g_CvvImage.DrawToHDC( hdc, &g_Rect );
dlg->ReleaseDC( pDC );
}
return 0;
}
BOOL xxxDlg::OnInitDialog()
{
..
//打开摄像头
g_Video = cvCreateCameraCapture( -1 );
if ( !g_Video )
{
AfxMessageBox( "无法打开摄像头" );
return FALSE;
}
//创建一个线程
CreateThread( NULL, 0, ThreadFun, this, 0, NULL );
}
//最后记得释放
void xxxDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: 在此处添加消息处理程序代码
g_bRun = false;
cvReleaseCapture( &g_Video );
}
追问
不行啊,运行没有反应。我的环境是VC6.0,opencv1.0 ,xp系统
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询