vc++6.0 和Opencv1.0 实现将捕获的视频转化为图片

    本文将介绍如何使用VC++6.0和opencv1.0实现对捕获的视频,转化为图片的操作。

    在本例程中实现了将视频转化为彩色图像、灰度图像和二值图像。

    本文使用的是MFC,具体建立的方法见博客内的文章MFC和Flash的完整通讯 》一文。里面有详细的讲解。令,在建立过程中,希望各位仔细,对“选择包含windows sockets”中,在“您希望包含WOSA支持吗?”选项不选,即,我们不需要Windows Sockets。在该步骤后,不是直接点击完成,而是点击下一步。在“您希望使用MFC库吗?”这个选项里,选择“作为静态的DLL”选项。这样基本的运行的环境就配置好了。

 

void CJP_1_1Dlg::ImageProcess()
{
	IplImage *pFrame = NULL;
	IplImage *pGray = NULL;
	IplImage *pTwo = NULL;
	
	CvCapture *pCaputer = NULL;
	CvSize size;
	int nFrmNum = 0;
	
	//	int i = 0;
	char image_name[13];
	
	cvNamedWindow("SourceImage", 1);
	cvNamedWindow("GrayImage", 1);
	cvNamedWindow("TwoImage", 1);
	
	cvMoveWindow("SourceImage", 30, 100);
	cvMoveWindow("GrayImage", 360, 100);
	cvMoveWindow("TwoImage", 690, 100);
	
	if (!(pCaputer = cvCreateCameraCapture(-1)))
	{
		AfxMessageBox("摄像头无法打开");
		return;
	}
	
	while (pFrame = cvQueryFrame(pCaputer))
	{
		nFrmNum ++;
		
		if(nFrmNum % 10 == 0)
		{
			size = cvSize((int)cvGetCaptureProperty(pCaputer, CV_CAP_PROP_FRAME_WIDTH/3),
				(int)cvGetCaptureProperty(pCaputer,  CV_CAP_PROP_FRAME_HEIGHT/3));
			//		fps = (int ) cvGetCaptureProperty(pCaputer, CV_CAP_PROP_FPS);
			//		numFrames = (int)cvGetCaptureProperty(pCaputer, CV_CAP_PROP_FRAME_COUNT);
			
			
			pGray =  cvCreateImage(size, IPL_DEPTH_8U, 1);
			pTwo = cvCreateImage(size, IPL_DEPTH_8U, 1);
			
			cvCvtColor(pFrame, pGray, CV_BGRA2GRAY);
			cvThreshold( pGray, pTwo ,50, 255, CV_THRESH_BINARY ); //取阈值为50把图像转为二值图像
			
			pGray->origin = pTwo->origin = pFrame->origin;
			
			sprintf( image_name, "%s%d%s", "imageGray", nFrmNum, ".jpg");
			cvSaveImage(image_name, pGray);
			sprintf( image_name, "%s%d%s", "imageTwo", nFrmNum, ".jpg");
			cvSaveImage(image_name, pTwo);
		}	
		if (nFrmNum >90)
		{
			break;
		}
		cvShowImage("SourceImage", pFrame);
		cvShowImage("GrayImage", pGray);
		cvShowImage("TwoImage", pTwo);
		
		if (cvWaitKey(10) >= 0)
		{
			break;
		}
		
	}
	
	cvDestroyAllWindows();
	cvReleaseCapture(&pCaputer);
	cvReleaseImage(&pGray);
	cvReleaseImage(&pTwo);
}


    作者的工程名字为JP_1_1,可以实现功能的代码就是上述的函数。其实现的功能是,每隔10帧,将当前帧转化为图片。读者可以根据自己的实际情况选择间隔的时间或者直接转化。在程序中,我们希望,读到90帧的时候,程序自动终止。

    整个函数是根据实际要求完成的。所有的概念都在里面了。希望能帮到大家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值