vc6.0利用opencv1.0实现在picture控件里面显示摄像头视频的问题

部分程序如下:
pwnd=GetDlgitem(picture空间的ID);
cvcamSetProperty(0,CVCAM_PROP_WINDOW,&pwnd);
这样的话,调试成功,但是电脑自动弹出一个ActiveMovie Window窗口来播放视频,没有在picture控件里面播放,求大神解决

第1个回答  2013-10-11
#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 );
}追问

不行啊,运行没有反应。我的环境是VC6.0,opencv1.0 ,xp系统

大家正在搜