我做的在MFC控件中播放视频的程序,总是显示不出来啊,哪位高手给看看! 其中用到了OPENCV和多线程的知识

我做的在MFC控件中播放视频的程序,总是显示不出来啊,哪位高手给看看!其中用到了OPENCV和多线程的知识voidDrawPicToHDC(IplImage*img,UI... 我做的在MFC控件中播放视频的程序,总是显示不出来啊,哪位高手给看看!

其中用到了OPENCV和多线程的知识
void DrawPicToHDC(IplImage *img, UINT ID)
{
HWND HDialog=FindWindow(NULL, "Camera");
HDC hdc;
hdc=GetDC(GetDlgItem(HDialog,ID));
CRect rect;
GetClientRect(GetDlgItem(HDialog,ID),&rect);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hdc,&rect);
ReleaseDC(GetDlgItem(HDialog,ID),hdc);
}
UINT FunctionName(LPVOID pParam)
{

while(true)
{
if(!cvGrabFrame(pCapture)) break;
pFrame=cvRetrieveFrame(pCapture);
if(!pFrame) break;

DrawPicToHDC(pFrame, IDC_STATIC_PIC);

}
return 0;
}
void CCameraDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
AfxBeginThread(FunctionName,NULL,THREAD_PRIORITY_BELOW_NORMAL,0,0);

CDialog::OnTimer(nIDEvent);
}
you settimer
展开
 我来答
小羊发e7
2010-11-08 · TA获得超过213个赞
知道答主
回答量:21
采纳率:0%
帮助的人:10.9万
展开全部
你的想法是不是:每隔一段时间调用一次Ontimer,在这次ontimer启动一个线程,在这个线程内将一帧图像显示在MFC控件上?
那么你做法明显错了,你的实际做法是:每隔一段时间调用一次ontimer,在这次ontimer启动一个线程,在这个线程内开始一个循环,在这个循环内把所有帧都画在IDC_STATIC_PIC上面,直到帧被画完为止。你想想,你每次调用的ontimer都做了“把所有帧都画在IDC_STATIC_PIC"这个工作,是错误。你应该做的事情是:每隔一段时间调用的ontimer,只把一帧显示在控件上。建议修改while循环体。
tustmg
2010-11-18
知道答主
回答量:8
采纳率:0%
帮助的人:9.6万
展开全部
我觉得是不是该在while中添加cvWaitkey(30);要不然来不及显示。
不知道对不对。lz试试吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kikyasha
2010-11-04
知道答主
回答量:11
采纳率:0%
帮助的人:1.6万
展开全部
有没有settime啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1c1abfb3b
2010-11-05 · 超过28用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:80.3万
展开全部
用CvvImage类的CvvImage::DrawToHDC试试吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式