首先參照下面這裏進行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)