首先參照下面這裏進行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次,每秒多少幀還不是很肯定。
// 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;
}
另外在最後生成階段可能出現沒法調試的問題,在百度搜索了一下,多是.suo文件出現了問題
按照以下方式修改能夠解決:
首先打開菜單 項目->項目屬性頁 選擇 配置屬性->連接器->調試->生成調試信息 改成 是 選擇 配置屬性->C/C++ ->常規->調試信息格式 改成 用於「編輯並繼續」的程序數據庫(/ZI) 選擇 配置屬性->C/C++ ->優化->優化 改成 禁用(/Od)