OPENCV MFC 在MFC中显示视频的程序if(inDlg.DoModal()==IDOK)这句中止,求大神指教

OPENCV MFC 在MFC中显示视频的程序if(inDlg.DoModal()==IDOK)这句中止,求大神指教,第1张

这乎宽激个错误的解决方法如下:

修改如下设置:工程(Project)->属性(Properties)->配置属性(Configuration Properties)->c/c++->代码生巧枝成(Code Generation)->运行时库(Use run-time library)->多线程岁袜调试DLL(/MDd)(Multithreaded DLL/Debug Multithreaded DLL)

假设你已经配置好OpenCV的开旁庆发环境。

以下是新版OpenCV风格的代码薯仿,经测试可运行。

#include "stdafx.h"

#include "opencv.hpp"

using namespace cv

int main(int argc, char** argv)

{

VideoCapture cap // 用数启纤于打开视频的类

Mat frame // 保存视频帧图像

char c = NULL

cap.open("D:\\test.avi") // 假设你的avi文件在此路径下

while (cap.isOpened())

{

cap >>frame

imshow("frame", frame)

c = waitKey(50) // 每50ms播放一帧,按Esc退出

if (c == 27)

break

}

destroyAllWindows()

cap.release()

return 0

}

#include "CvvImage.h"

#include <highgui.h>

#include <cv.h>

IplImage * g_Frame//用于存储一帧

CvvImageg_CvvImage

CvCapture * g_Video

CRect g_Rect

boolg_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 )

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12296083.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存