OpenCV x64 vs2010 下打開攝像頭錄製視頻寫成avi(代碼爲轉載)

首先參照下面這裏進行opencv x64位機器下面的配置php

http://wiki.opencv.org.cn/index.php/VC_2010%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.4html

 

參考到環境變量處的配置以後,文章中所說的x64位機器環境的配置就不是很清晰了,我本身摸索了一些,其實vs2010自己就不是一個64位的編譯器。ios

 

 

 

因此我認爲,在64位的win7旗艦版系統中,這個編譯器就是支持64位程序的編譯運行。數據庫

 

可是vs2010中沒有可以直接建立64位程序啊,因此就新建win32控制檯程序以後在進行設置。ide

下面是我在vs2008中的新建的工程作的實驗,vs2010同樣,都是在屬性管理器中->右鍵工程->屬性->配置管理起->活動平臺解決方案->新選擇平臺,選擇x64測試

 

 

 

接着就生成了,新的工程配置選項,以下圖所示:優化

 

 

 

這時候回到,最上面的鏈接,講裏面所說的路徑,配置一下:ui

 

http://wiki.opencv.org.cn/index.php/VC_2010%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.4編碼

 

畫紅線的部分右鍵屬性,這裏跟鏈接裏面的教程不太同樣,因爲是在64位環境下,彷佛不能直接配置成全部工程的通用屬性,因此每次使用的時候都要重新配置下,這點可能要注意!spa

 

 

 

 

配置好了以後,可使用教程中的代碼進行一下測試,還要注意一個問題,教程中的代碼可能不須要一些附加依賴庫就可以運行,可是我們下面的,驅動攝像頭的程序就要用到不少附加依賴庫。

 

有時候在網上搜的時候,因爲版本的不一樣,因此附加依賴庫後面的數字是不一樣的,你們複製粘貼的時候注意要修改一下。下面這些差很少是全部的庫了

 

 

下面的都是帶d 的,也就是debug版本 的附加依賴庫:
 

 


opencv_contrib244d.lib
opencv_core244d.lib
opencv_features2d244d.lib
opencv_flann244d.lib
opencv_gpu244d.lib
opencv_highgui244d.lib
opencv_imgproc244d.lib
opencv_legacy244d.lib
opencv_ml244d.lib
opencv_nonfree244d.lib
opencv_objdetect244d.lib
opencv_photo244d.lib
opencv_stitching244d.lib
opencv_ts244d.lib
opencv_video244d.lib
opencv_videostab244d.lib

 

opencv_calib3d244.lib
opencv_contrib244.lib
opencv_core244.lib
opencv_features2d244.lib
opencv_flann244.lib
opencv_gpu244.lib
opencv_highgui244.lib
opencv_imgproc244.lib
opencv_legacy244.lib
opencv_ml244.lib
opencv_nonfree244.lib
opencv_objdetect244.lib
opencv_photo244.lib
opencv_stitching244.lib
opencv_ts244.lib
opencv_video244.lib
opencv_videostab244.lib

 

 

下面的程序來自這個鏈接

http://www.cppblog.com/lanshengsheng/archive/2013/01/16/197309.html

我用個人攝像頭(藍色妖姬M2200 免驅高清)測試,代表,能錄8秒左右的avi格式的錄像,由於是200次,每秒多少幀還不是很肯定。

 

 

<span style="font-family:KaiTi_GB2312;font-size:24px;">// Camera_First.cpp : 定義控制檯應用程序的入口點。
//

//#include "stdafx.h"



#include "cv.h"
#include "cxcore.h" 
#include "highgui.h"
#include <iostream> 



using namespace std; 
int main() 
{   
	CvCapture* capture=cvCaptureFromCAM(-1);
	CvVideoWriter* video=NULL;

	IplImage* frame=NULL;

	int n;

	if(!capture) //若是不能打開攝像頭給出警告

	{

		cout<<"Can not open the camera."<<endl;

		return -1;

	}

	else

	{

		frame=cvQueryFrame(capture); //首先取得攝像頭中的一幀

		video=cvCreateVideoWriter("camera.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25,
			cvSize(frame->width,frame->height)); //建立CvVideoWriter對象並分配空間

		//保存的文件名爲camera.avi,編碼要在運行程序時選擇,大小就是攝像頭視頻的大小,幀頻率是32

		if(video) //若是能建立CvVideoWriter對象則代表成功
		{

			cout<<"VideoWriter has created."<<endl;

		}


		cvNamedWindow("Camera Video",1); //新建一個窗口

		int i = 0;

		while(i <= 200) // 讓它循環200次自動中止錄取

		{

			frame=cvQueryFrame(capture); //從CvCapture中得到一幀

			if(!frame)

			{

				cout<<"Can not get frame from the capture."<<endl;

				break;

			}

			n=cvWriteFrame(video,frame); //判斷是否寫入成功,若是返回的是1,表示寫入成功

			cout<<n<<endl;

			cvShowImage("Camera Video",frame); //顯示視頻內容的圖片

			i++;

			if(cvWaitKey(2)>0)

				break; //有其餘鍵盤響應,則退出

		}


		cvReleaseVideoWriter(&video);

		cvReleaseCapture(&capture);

		cvDestroyWindow("Camera Video");

	}

	return 0;

}

</span>


 

 

 

 

另外在最後生成階段可能出現沒法調試的問題,在百度搜索了一下,多是.suo文件出現了問題

按照以下方式修改能夠解決:

首先打開菜單 項目->項目屬性頁  選擇 配置屬性->連接器->調試->生成調試信息 改成 是  選擇 配置屬性->C/C++ ->常規->調試信息格式 改成 用於「編輯並繼續」的程序數據庫(/ZI)  選擇 配置屬性->C/C++ ->優化->優化 改成 禁用(/Od)

相關文章
相關標籤/搜索